使用 LoadLibraryA 的 dll 加载错误
dll loading error using LoadLibraryA
我们尝试使用 LoadLibraryA 函数从 64 位 dll 内部加载 dll 库。它返回 126 错误 - 找不到 mod。我们确信,提供给该函数的 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:%dn",size);
fclose(fp);
没有问题,我们收到的文件大小为77。
我们还尝试将 dl 转换为 64 位,并尝试过,仍然不好。
您无法将 32 位 dll 作为可执行代码加载到 64 位进程中(并且由于您使用的是 LoadLibraryA(),这就是您可以尝试执行的所有操作)。
假设您尝试加载的 dll 和加载它的进程是相同的类型,那么您是将完整路径传递给 LoadLibraryA() 还是相对路径或只是一个 dll 名称?如果您没有使用完整路径,请考虑尽可能使用 LoadLibraryEx(),因为这可以让您更好地控制所使用的搜索路径。如果您使用的是完整路径,请尝试使用正常文件操作打开文件,如果无法加载 dll,这是否有效?如果这有效,请尝试使用LOAD_LIBRARY_AS_DATAFILE加载库EX(),看看这是否会将dll加载为简单的数据文件(这证明它正在查找该文件)。
运行 Sysinternal 的 ProcMon 并观察代码打开 DLL,这可能会显示相关的 DLL 加载失败。
- 为什么加载SDF会导致Mobilizer创建闭环错误
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- 当我尝试加载内核模块时,如何修复C++中的这个 malloc() 错误?
- 在 Linux 中使用 -fvisibility=hidden 编译时出现库加载错误
- 视觉C++:图像序列加载错误
- SFML: dyld:即使更新了库路径,库也未加载错误
- 如何处理加载错误的共享库版本的情况
- SFML 库未加载错误,找不到图像
- C Excel加载加载错误:XLL文件由Excel加载为文本文件
- IF流 Fin 加载错误
- 示例文件中的CImg图像加载错误
- 如何修复C#应用程序中调用C++DLL函数时的上下文加载错误
- 使用 LoadLibraryA 的 dll 加载错误
- 关于赋值运算符过度加载错误
- 调试后出现项目加载错误
- 如何解决 clang 的 Python 绑定的加载错误?
- 从c++调用MATLAB dyld:库未加载错误
- 包编译动态库加载错误
- 尝试在Visual Studio 2012中编译时,符号加载错误
- OpenGL多重纹理加载错误