首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“'HMODULE (LPCSTR)”:无法将参数1从“const _Elem *”转换为“LPCSTR”

“'HMODULE (LPCSTR)”:无法将参数1从“const _Elem *”转换为“LPCSTR”
EN

Stack Overflow用户
提问于 2018-10-26 06:39:50
回答 1查看 3.6K关注 0票数 1

在vc++中,我有一个包含两个项目的解决方案。项目A有一个dllLoader.hdllLoader.cpp,它用LoadLibrary加载dll,我需要在项目B中调用它的函数,所以我将头文件和cpp文件复制并粘贴到项目B。

代码语言:javascript
复制
Project A Main.cpp
------------------
#include "../Plugin/DllLoader.h"
#include "../Plugin/Types.h"
int main(){
std::string str("plugin.dll");
bool scuccessfulLoad = LoadDll(str);}

下面是项目A中的dllLoader (项目B中的镜像/副本随着这里的更改而改变)

代码语言:javascript
复制
bool LoadDll(std::string FileName)
{
    std::wstring wFileName = std::wstring(FileName.begin(), FileName.end());
    HMODULE dllHandle1 = LoadLibrary(wFileName.c_str());
    if (dllHandle1 != NULL)
    { ****   
      return TRUE;
    }

构建项目本身不会显示任何错误并成功完成,但是当我构建解决方案(其中包含其他项目)时,就会得到错误。

C2664 'HMODULE LoadLibraryA(LPCSTR):无法将参数1从“const _Elem *”转换为“LPCSTR”

EN

回答 1

Stack Overflow用户

发布于 2018-10-26 06:46:21

将一个宽字符串传递给函数。因此,代码显然是针对UNICODE编译的,这样LoadLibrary宏就可以扩展到LoadLibraryW。但是,代码失败的项目并不以UNICODE为目标。因此,这里的宏扩展为LoadLibraryA。因此出现编译器错误,因为您传递的是一个宽字符串。

因此,问题是不同项目的编译器设置不一致。检查失败项目的项目配置,以确保定义了一致的条件。也就是说,确保在包含此代码的所有项目中定义了所需的条件(想必是为了启用UNICODE)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53002858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档