新建ATL项目后,选择使用多字节字符集,然后编译,就编译不通过
STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine)
{
HRESULT hr = E_FAIL;
static const wchar_t szUserSwitch[] = _T("user"); //“初始化”: 无法从“const char [5]”转换为“const
// wchar_t []” if (pszCmdLine != NULL)
{
if (_wcsnicmp(pszCmdLine, szUserSwitch, _countof(szUserSwitch)) == 0)// 未能使函数模板//“char (*__countof_helper(_CountofType (&)[_SizeOfArray]))[_SizeOfArray]”专用化
{
AtlSetPerUserRegistration(true);
}
} if (bInstall)
{
hr = DllRegisterServer();
if (FAILED(hr))
{
DllUnregisterServer();
}
}
else
{
hr = DllUnregisterServer();
}
return hr;
}
我什么都还没干,这是什么原因,是ATL不支持多字节吗?
STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine)
{
HRESULT hr = E_FAIL;
static const wchar_t szUserSwitch[] = _T("user"); //“初始化”: 无法从“const char [5]”转换为“const
// wchar_t []” if (pszCmdLine != NULL)
{
if (_wcsnicmp(pszCmdLine, szUserSwitch, _countof(szUserSwitch)) == 0)// 未能使函数模板//“char (*__countof_helper(_CountofType (&)[_SizeOfArray]))[_SizeOfArray]”专用化
{
AtlSetPerUserRegistration(true);
}
} if (bInstall)
{
hr = DllRegisterServer();
if (FAILED(hr))
{
DllUnregisterServer();
}
}
else
{
hr = DllUnregisterServer();
}
return hr;
}
我什么都还没干,这是什么原因,是ATL不支持多字节吗?
static const char szUserSwitch[] = _T("user");
但中间都用宽字节
static const wchar_t szUserSwitch[] = _T("user"); //“初始化”: 无法从“const char [5]”转换为“const
if (_wcsnicmp(pszCmdLine, szUserSwitch, _countof(szUserSwitch)) == 0)// 未能使函数模板
------->
static const TCHAR szUserSwitch[] = _T("user");
或
static const wchar_t szUserSwitch[] = L"user";