【发布时间】:2017-09-11 12:54:05
【问题描述】:
我有一个从当前路径加载 DLL 的简单程序
#include <iostream>
#include <windows.h>
using namespace std;
auto loaddll(const char * library) {
auto dllModule = LoadLibrary(library);
if(dllModule == NULL)
throw "Can't load dll";
return dllModule;
}
int main() {
try {
auto Handle = loaddll("ISab.dll");
} catch(const char * error) {
cerr << "An Unexpected error :" << error << endl;
cerr << "Get Last Error : " << GetLastError();
}
}
加载库对于当前路径中的每个 DLL 都失败,但对于像 User.dll 这样的 DLL 加载库成功
如果我运行它,输出会是这样的
An Unexpected error :Can't load dll
Get Last Error : 0
如果我指定 dll 的完整路径,这也会失败
【问题讨论】:
-
GetLastError()应该在导致错误的函数之后立即调用。否则它可能会被内部系统调用覆盖,在这种情况下可能是在输出到cerr期间。 -
不要将问题更改为其他问题,从而使您已经收到的答案无效。我回滚了你的更改。