错误 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
未定义,因此对基于 TCHAR
的 LoadLibrary()
的调用将映射到 LoadLibraryA()
而不是 LoadLibraryW()
(和所有其他基于 TCHAR
的 API 也将映射到它们的 Ansi 版本而不是它们的 Unicode 版本。
您没有显示您的代码,但您显然将 WCHAR*
值传递给 LoadLibrary()
。这仅在 LoadLibrary()
映射到 LoadLibraryW()
时有效(character set
是 Unicode),因为 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);
我已经进行了所有必要的设置以获取我的代码 运行ning。在所有配置中,我都进行了如下设置: 配置类型:.dll MFC的使用:共享dll 字符集:多字节字符集
请帮我 运行 我的代码。并帮助我了解我哪里出错了。
关于, 奇尼
character set: multi-byte character set
这意味着 UNICODE
未定义,因此对基于 TCHAR
的 LoadLibrary()
的调用将映射到 LoadLibraryA()
而不是 LoadLibraryW()
(和所有其他基于 TCHAR
的 API 也将映射到它们的 Ansi 版本而不是它们的 Unicode 版本。
您没有显示您的代码,但您显然将 WCHAR*
值传递给 LoadLibrary()
。这仅在 LoadLibrary()
映射到 LoadLibraryW()
时有效(character set
是 Unicode),因为 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);