,,VC++ loadlibrary()加载三方dll失败, 返回错误码-126的解决方法

,,VC++ loadlibrary()加载三方dll失败, 返回错误码:126的解决方法

今天写VC loadlibrary()加载第三方dll时,总是失败,错误代码是126。在这里,我给大家分享一下具体的解决方案。

方式一: 采用 LoadLibraryEx

如果DLL不在调用者的同一个目录中,可以用LoadLibrary(L ' DLL ' DLL的绝对路径')加载。但是,如果在被调用的DLL内部调用另一个DLL,调用仍然会失败。解决方案是使用LoadLibraryEx:

LibraryEx ("DLL绝对路径",null,load _ with _ altered _ search _ path);

通过指定LOAD_WITH_ALTERED_SEARCH_PATH,系统DLL搜索序列从DLL所在的目录开始。

方式二: 采用 SetCurrentDir

跨目录调用dll。你应该这样做

用GetCurrentDir保存当前工作目录

使用SetCurrentDir将当前工作目录设置为DLL所在的路径。您需要使用绝对路径。

使用DLL加载库。

使用SetCurrentDir恢复到原始工作路径。

如下

TCHAR chCurDir[MAX _ PATH]={ 0 };

GetCurrentDirectory(MAX_PATH,chCurDir);

SetCurrentDirectory(_ T(' E:\ \ test \ '));

m _ hDLL=LoadLibrary(_ T(' mytest . dll '));

SetCurrentDirectory(chCurDir);

dll的加载顺序

EXE目录;

当前目录getCurrentDirectory();

系统目录getsystem directory();

WINDOWS目录getwindows directory();

环境变量PATH中包含的目录。

当使用loadlibrary加载dll使用的路径时,该函数将忽略该路径,只根据已建立的规则加载dll。所以如果要加载指定目录的dll,可以使用以上两种方案。

后续

最近又遇到一个126的问题,以上两种方法都解决不了。

问题描述:

Windows 64位系统,加载32位DLL,DLL加载路径为“C:\Windows\System32\xxx.dll”

解决方案:

将上面加载失败的DLL副本复制到“C:\ Windows \ syswow 64”;

在不改变程序的情况下,path参数仍然填充在‘C:\ Windows \ System32 \ XXX . dll’中;

解决问题!

原因:

简单来说,你可以从SysWOW64的全称中找到原因:

64位Windows上的2位Windows(64位Windows上的32位Windows)

详情请参考以下链接:

SysWow64是什么?

LoadLibraryW()无法在System32中加载DLL

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • windows10缺少dll文件,win10运行时出错无法找到指定dll库文件
  • ,,详解VS2019 dumpbin查看DLL的导出函数
  • ,,解决采集时出现msxml3.dll 错误的方法
  • ,,使用 JScript 创建 .exe 或 .dll 文件的方法
  • .net dll加密,c++ dll 反编译
  • .net dll加密,c++ dll 反编译,保护.net中的dll文件方法(防止破解、反编译dll)
  • .dll是什么文件能不能删除,文件dll怎么删除
  • dll没有在指定的windows上运行,xlivedll没有在windows上运行
  • 删除linkinfo.dll操作无法完成,因为已经在打开,linkinfo.dll是病毒吗
  • python能封装成dll文件吗,python自己封装的类怎么调用
  • 无法定位序数4445于动态链接库libcurl.dll,无法定位序数4445于动态链接库
  • d3dx9-43.dll文件丢失,d3dx9_41.dll文件丢失
  • igfxsrvc.exe木马病毒,igfxsrvc.dll加载失败_1
  • 怎么用360修复dll文件,360 dll文件修复
  • win10系统vcruntime140.dll丢失的解决方法,win10由于找不到vcruntime140.dll
  • 留言与评论(共有 条评论)
       
    验证码: