C++ - LoadLibrary返回126错误的自制DLL

问题描述:

我正在玩自定义项目,并尝试在其他项目中创建一个DLL,并在运行时使用LoadLibrary函数链接,但它返回126错误。在谷歌搜索了很多,但在大多数情况下,人们调试其他人的程序。但我的DLL包含功能string sayHello() { return "Hello"; }。应该应用哪些项目选项才能让我成功加载此dll?并调用函数?由于C++ - LoadLibrary返回126错误的自制DLL

UDP:

vector<BYTE> decodedDll = base64_decode(base64dll); 
string filename = string("lib.dll"); 
ofstream outfile(filename, ios::out | ios::binary); 
outfile.write((const char*) &decodedDll[0], decodedDll.size()); 
outfile.close(); 
if (!fileExists(filename)) 
{ 
    cout << "DLL file not found " << endl; 
    getchar(); 
    return; 
} 
HINSTANCE hGetProcIDDLL = LoadLibrary((LPCWSTR) filename.c_str()); 
int loadLibraryError = GetLastError(); 
if (hGetProcIDDLL == NULL) 
{ 
    string error = "Could not load DLL\n"; 
    send(s, error.c_str(), error.length(), 0); 
    finishSocketWork(s, address); 
    cout << "Unable to load LIB, error code " << loadLibraryError << endl; 
    getchar(); 
    return; 
} 

(这是一所大学工作,我需要从客户端接收DLL,调用指定的函数,并返回结果)。和.dll转移做工不错 - 文件都是平等的

+0

你确定你传递了正确的路径'LoadLibrary'打电话?错误'126'是'ERROR_MOD_NOT_FOUND',这意味着无法找到“模块”。你可以编辑你的问题,包括一个[最小,完整和可验证的例子](http://*.com/help/mcve),显示你在做什么?并请[请阅读如何提出良好问题](http://*.com/help/how-to-ask)。 –

+0

@Someprogrammerdude添加了我的代码。对不起,我以为我有一些缺失的依赖关系,并没有必要提供我的代码 –

LoadLibrary((LPCWSTR)filename.c_str()); 

这是一个常见的错误,试图用(LPCWSTR)投来隐藏编译器错误。演员在这里毫无意义。你也可以尝试从整数转换为字符串。

使用ANSI版本LoadLibraryA为ANSI参数:

HINSTANCE hGetProcIDDLL = LoadLibraryA(filename.c_str()); 

或者使用宽字符串函数std::wstring

+0

谢谢,它的工作原理 –