错误C2664:'LoadLibraryA':无法将参数1从'WCHAR *'转换为'LPCSTR'

时间:2015-03-18 07:26:34

标签: unicode

我已经进行了所有必要的设置以使我的代码运行。在所有配置中,我进行了如下设置: 配置类型:.dll 使用MFC:共享dll 字符集:多字节字符集

请帮我运行我的代码。并帮助我理解我哪里出错了。

关心, 奇尼

1 个答案:

答案 0 :(得分:0)

  

字符集:多字节字符集

这意味着UNICODE未定义,因此对基于TCHAR的{​​{1}}的调用将映射到LoadLibrary()而不是LoadLibraryA()(以及所有其他基于LoadLibraryW()的API也将映射到他们的Ansi版本而不是他们的Unicode版本。)

您没有显示您的代码,但您显然已将TCHAR值传递给WCHAR*。仅当LoadLibrary()映射到LoadLibrary()LoadLibraryW() Unicode )时才会有效,因为character set需要LoadLibraryA()({{ 1}}是该的别名)。您无法通过CHAR*预期LPCSTR,反之亦然。

如果要将字符串文字传递给WCHAR*,则需要使用CHAR*宏包装它,以便文字将尊重您的LoadLibrary()配置,例如:

TEXT()

或者停止使用基于character set的API并直接调用所需的Ansi / Unicode版本:

... = LoadLibrary(TEXT("literal"));

TCHAR

如果您传递的是变量而不是文字,则必须根据变量的数据类型直接调用... = LoadLibraryA("literal"); / ... = LoadLibraryW(L"literal");

LoadLibraryA()

LoadLibraryW()