我已经进行了所有必要的设置以使我的代码运行。在所有配置中,我进行了如下设置: 配置类型:.dll 使用MFC:共享dll 字符集:多字节字符集
请帮我运行我的代码。并帮助我理解我哪里出错了。
关心, 奇尼
答案 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()