C++ - 加载库为自制 DLL 返回 126 错误

C++ - LoadLibrary returns 126 error for self-made DLL

本文关键字:DLL 返回 错误 加载 C++      更新时间:2023-10-16

我正在自定义项目中播放,并尝试使用LoadLibrary函数在其他项目中创建一个 DLL 并在运行时链接,但它返回 126 错误。在谷歌上搜索了很多,但在大多数情况下,人们调试了其他人的程序。但是我的DLL包含函数string sayHello() { return "Hello"; }。应应用哪些项目选项才能让我成功加载此 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 DLLn";
    send(s, error.c_str(), error.length(), 0);
    finishSocketWork(s, address);
    cout << "Unable to load LIB, error code " << loadLibraryError << endl;
    getchar();
    return;
}

(这是大学工作,我需要从客户端接收 DLL,调用指定的函数并返回结果(。传输效果很好.dll - 文件是平等的

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

这是一个常见错误,尝试使用(LPCWSTR)强制转换隐藏编译器错误。演员阵容在这里毫无意义。您也可以尝试从整数转换为字符串。

对 ANSI 参数使用LoadLibraryA ANSI 版本:

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

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