本文主要是介绍LoadLibrary()动态调用dll失败,GetLastError()返回126,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题:
写项目时要调用a.dll,a.dll依赖a1.dll,路径确保无误,dll也在对应的目录,依赖dll也在,使用LoadLibrary()加载时会失败,用GetLastError()返回126。网上搜了下126是没有找到指定模块;
解决方案:
2种解决方案:
1. 调用的dll放在指定目录,依赖的dll放在程序目录下
当前运行的程序是test.exe,在D:\\TEST\\文件夹下,
a.dll在D:\\TEST\\DLL\\文件夹下,
那么要把a1.dll放在D:\\TEST文件夹下
2. 使用LoadLibraryEx()函数
LoadLibraryEx(sdkFullPath,NULL, LOAD_WITH_ALTERED_SEARCH_PATH)
LoadLibraryEx参数说明
lpLibFileName String,指定要载入的动态链接库的名称。采用与CreateProcess函数的
lpCommandLine参数指定的同样的搜索顺序
hFile Long,未用,设为零
dwFlags Long,指定下述常数的一个或多个
DONT_RESOLVE_DLL_REFERENCES:不对DLL进行初始化,仅用于NT
LOAD_LIBRARY_AS_DATAFILE:不准备DLL执行。如装载一个DLL只是为了访问它的资源,就可以改善一部分性能
LOAD_WITH_ALTERED_SEARCH_PATH:指定搜索的路径
参考:https://www.cnblogs.com/huangsitao1024/p/10174034.html
这篇关于LoadLibrary()动态调用dll失败,GetLastError()返回126的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!