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

error C2664: 'LoadLibraryA' : cannot convert parameter 1 from 'WCHAR *' to 'LPCSTR'

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

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

关于, 奇尼

character set: multi-byte character set

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

您没有显示您的代码,但您显然将 WCHAR* 值传递给 LoadLibrary()。这仅在 LoadLibrary() 映射到 LoadLibraryW() 时有效(character setUnicode),因为 LoadLibraryA() 期望 CHAR*LPCSTR 是它的别名)。您不能在需要 CHAR* 的地方传递 WCHAR*,反之亦然。

如果您将字符串文字传递给 LoadLibrary(),您需要使用 TEXT() 宏将其包装起来,以便文字符合您的 character set 配置,例如:

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

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

... = LoadLibraryA("literal");

... = LoadLibraryW(L"literal");

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

... = LoadLibraryA(AnsiVariable);

... = LoadLibraryW(WideVariable);