我们正试图从使用LoadLibraryA函数的64位DLL中加载DLL库。它返回126错误 - mod找不到。我们确信,给函数的dll文件路径是正确的。使用LoadLibraryA DLL加载错误
我们试过一个虚拟的dll来测试它,它工作,它被加载。
我们也尝试将dll(这是我们要加载的第一个dll的依赖)添加到虚拟dll。它也有效。所以这个问题似乎不是关于依赖dll,而是我们首先要加载的原始dll。
我们也尝试将dl转换为64位,并尝试过,仍然没有好处。
我们还使用Dependency Walker检查了依赖关系。一切都好。
我们使用的操作系统是Windows 8,64位。如果它有什么区别.. 有没有人有任何关于这个问题的想法?
编辑: 我们也尝试这种代码:
hModule = LoadLibraryW(L"C:\\temp\\dllToLoad.dll");
并收到此错误代码:
"First-chance exception at 0x00000000 in C_Test_TSMPPKCS11.exe: 0xC0000005: Access violation at location 0x0000000000000000."
编辑2: ,我们首先使用的代码是:
hModule = LoadLibraryA((char*)aDLLFile);
编辑3: 我们使用完整路径加载dll。为了测试这一点,我们尝试这种代码:
FILE *fp;
int size = 0;
fp=fopen("C:\\temp\\dllToLoad.dll", "r");
size = fgetc(fp);
printf("size:%d\n",size);
fclose(fp);
有没有问题,我们收到的文件大小是77
如果您在这里没有得到有效的答案,请查阅“加载程序捕捉”,这是一种调试此类问题的机制。 – RichieHindle
(小问题:'fgetc'从文件中获取一个字节;它没有得到大小,不是那个改变任何东西。) – RichieHindle