C++ - 自制 DLL 的 LoadLibrary returns 126 错误
C++ - LoadLibrary returns 126 error for self-made DLL
我正在自定义项目中玩,并尝试在其他项目中创建 DLL,并在运行时使用 LoadLibrary
函数 link,但它 return 出现 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 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,调用指定函数和 return 结果)。 .dll 传输效果很好——文件是相等的
LoadLibrary((LPCWSTR)filename.c_str());
这是一个常见错误,试图通过使用 (LPCWSTR)
强制转换来隐藏编译器错误。演员表在这里毫无意义。您也可以尝试从整数转换为字符串。
为 ANSI 参数使用 ANSI 版本 LoadLibraryA
:
HINSTANCE hGetProcIDDLL = LoadLibraryA(filename.c_str());
或者使用宽字符串函数std::wstring
我正在自定义项目中玩,并尝试在其他项目中创建 DLL,并在运行时使用 LoadLibrary
函数 link,但它 return 出现 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 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,调用指定函数和 return 结果)。 .dll 传输效果很好——文件是相等的
LoadLibrary((LPCWSTR)filename.c_str());
这是一个常见错误,试图通过使用 (LPCWSTR)
强制转换来隐藏编译器错误。演员表在这里毫无意义。您也可以尝试从整数转换为字符串。
为 ANSI 参数使用 ANSI 版本 LoadLibraryA
:
HINSTANCE hGetProcIDDLL = LoadLibraryA(filename.c_str());
或者使用宽字符串函数std::wstring