【发布时间】:2016-09-27 10:44:07
【问题描述】:
我正在使用 Visual Studio 2015,我想编写可以在 Unicode 项目和多字节项目中使用的 C++ 静态库,我是如何做到的?
例如我有这个代码:
namespace Reg
{
LONG WINAPI CreateKey(
_In_ HKEY hKey,
_In_ LPCTSTR lpSubKey,
_In_ REGSAM samDesired,
_Out_ PHKEY phkResult
)
{
return RegCreateKeyEx(hKey,
lpSubKey,
0, NULL,
REG_OPTION_NON_VOLATILE,
samDesired,
NULL,
phkResult,
NULL);
}
}
【问题讨论】:
-
只用一个wchar_t接口,不用管所有的TCHAR业务。发明时是个坏主意,现在也是个坏主意。在任何情况下,不使用“宽”版本的 Windows API 都是愚蠢的。
-
你必须有两个函数,因为这是C++,你可以重载,所以有两个
CreateKey函数,一个接受LPCWSTR,一个接受LPCSTR。跨度> -
@RaymondChen 我可以只有一个带有
LPCTSTR和两个定义的声明,一个带有LPCWSTR和一个带有LPCSTR的定义吗? -
@codeDom:不。每个函数都需要自己的声明和定义。
-
@RaymondChen 我尝试使用单一声明进行编译,并且成功。这是什么意思?
标签: c++ visual-studio unicode multibyte