问题描述

使用::LoadLibrary(sdkFullPath)动态加载海康dll,加载失败,GetLastError返回错误码126。

原因分析

错误码126表示没有找到指定模块,但是::LoadLibrary的参数sdk路径是正确的。

解决方案

最后使用::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:指定搜索的路径

LoadLibrary和LoadLibraryEx的区别

两个函数的主要区别是LoadLibraryEx多了个参数dwFlags,可以设定一些动态加载DLL时的选项。
一般来说,LoadLibraryEx加载DLL时并没有调用DLL,也就是不会执行DllMain,这样以来即使DLL本身存在错误也会映射成功的。
而LoadLibrary加载时不旦旦映射,还会去调用执行DllMain。
如果确认一个DLL本身不存在问题,但用LoadLibrary加载失败用LoadLibraryEx加载成功,此时一要看DllMain是否作出了某些限制,二要看DLL本身是否链接了其他DLL。

总结

还是没有太搞清楚使用LoadLibrary加载失败的详细原因,感觉是依赖的dll文件找不到,使用LoadLibraryEx可以遍历子目录找dll,所以成功了。

之后再看看这个问题,先放放,后续弄明白再更新。

参考

https://blog.csdn.net/cuglifangzheng/article/details/50580279

https://zhidao.baidu.com/question/204625991052212405.html

https://baike.baidu.com/item/LoadLibraryEx/9598009

转载于:https://www.cnblogs.com/huangsitao1024/p/10174034.html

LoadLibrary动态加载dll失败,GetLastError返回错误码126相关推荐

  1. 使用LoadLibrary动态加载DLL并使用其中的类

    转载地址:https://blog.csdn.net/hetoby/article/details/51941921 动态加载DLL并使用其中的函数,是大家经常用到的,那么直接使用LoadLibrar ...

  2. C++的LoadLibrary动态加载dll

    1.导出接口 //抽象类 class CDev {virtual bool Ex_OPenDev()=0;virtual bool Ex_OPenDev()=0;//.. }HRESULT Creat ...

  3. 【原】 动态加载dll

    动态调用动态库步骤: 1.创建一个函数指针,其指针数据类型要与调用的DLL引出函数相吻合. 2.通过Win32 API函数LoadLibrary()显式的调用DLL,此函数返回DLL的实例句柄. 3. ...

  4. VC静态加载DLL和动态加载DLL

    VC静态加载DLL和动态加载DLL 1. 静态加载DLL 如果你有a.dll和a.lib,两个文件都有的话可以用静态加载的方式: message函数的声明你应该知道吧,把它的声明和下面的语句写到一个头 ...

  5. Unity3D的坑系列:动态加载dll

    Unity3D的坑系列:动态加载dll 我现在参与的项目是做MMO手游,目标平台是Android和iOS,iOS平台不能动态加载dll(什么原因找乔布斯去),可以直接忽略,而在Android平台是可以 ...

  6. c# winform程序调用托管dll(c#的dll),使用添加引用和动态加载dll

    1. dll要强名. 2. winform程序要添加引用dll(自动获得dll的函数调用定义),"复制本地"属性设false,因为下一步会动态加载dll,所以"复制本地& ...

  7. C#根据Debug、Release模式动态加载dll

    //根据Debug.Release状态动态加载dll文件         #if (DEBUG)                 const string dllPathCamera = @" ...

  8. htmlimg图片加载失败_动态加载图片失败的默认图显示

    经常碰到这类场景,动态加载图片时,因为一些原因(图片链接不存在啊,图片误删啊,图片路径不对或图片路径为空等等)导致真实图片显示不出来.那么为了提高用户体验,都会显示一个默认图. 动态加载图片失败时,显 ...

  9. bpl文件java,在LoadLibrary中动态加载BPL失败

    我想在Delphi 10 Seattle(Update 1)或Delphi 10.1 Berlin项目(Enterprise版本)中动态加载BPL模块 . 但LoadPackage函数失败并显示消息( ...

  10. LoadLibrary无法加载.dll解决思路

    动态载入DLL所需要的三个函数详解(LOADLIBRARY,GETPROCADDRESS,FREELIBRARY) dll, lib, h的区别 dll是动态库, 将其链接进工程, 一般用LoadLi ...

最新文章

  1. IOS开发网络第一天之06线程之间的通信
  2. 矩阵A对任意的可逆矩阵p都有Ap=pA,证明A为数量矩阵
  3. 登录不上_无法登录远程:出现身份验证错误,要求的函数不受支持
  4. IBASE save - my toolset investigation
  5. AI前沿线上大会,ALBERT一作、京东AI科学家等大咖亲临现场,限时免费,名额有限!...
  6. 大数据(7) - zookeeper的安装与使用
  7. 【使用Idea打包war包】
  8. DynamipsGUI使用入门
  9. Tcl语言入门(一)基本知识
  10. 《程序员修炼之道 - 从小工到专家》吐血解读
  11. Android+Opencv图形的形状颜色识别
  12. iOS面试 swift篇
  13. 软件工程大一学年简单的总结一下
  14. 隐私空间伪装计算机,隐私空间app(文件夹隐藏) 6.1.9 免root
  15. html img路径 404,webpack css背景图片无法现实,图片路径404
  16. Thymeleaf 是个什么?
  17. AIR780E系列教程目录
  18. Unity Steam_VR 开发工具插件 VRTK自带案例分析(第一部分)
  19. Spring5 里边的新玩法!这种 URL 请求让我涨见识了!
  20. opencv人脸识别-海康网络摄像头

热门文章

  1. Visual Studio Code 代理设置
  2. Semantic Parsing on Freebase from Question-Answer Pairs【论文笔记】
  3. 自动化运维原来如此简单之工具建设
  4. 从Trie树(字典树)谈到后缀树(10.28修订)
  5. Linux必会100个命令(三十八)halt
  6. DayDayUp:平均每篇文章1毛! 本博主自2020年6月1日起,如有任何问题可在博客贴吧留言或者私信博主(包括并不限于GUI软件编写、安装及编程语言中的bug、AI算法设计等),非诚勿扰!
  7. 陈越何欣铭老师数据结构PTA08-图8 How Long Does It Take
  8. 向量的点乘(内积、数量积)和叉乘(外积、向量积)
  9. GROMOS拓扑(、坐标、轨迹、能量)相关文件解读手册第5章阅读笔记II
  10. NIC不变量检测对抗样本