【1】LoadLibrary加载动态库失败的可能原因以及解决方案:

(1)dll动态库文件路径不对。此场景细分为以下几种情况:

1.1 文件路径的确错误。比如:本来欲加载的是A文件夹下的动态库a.dll,但是经过仔细排查原因,发现a.dll动态库竟然被拷贝到B文件夹下去了。

若真遇到这种低级错误,建议你找个没人的墙角蹲下用小拇指逆时针划圈圈去吧。。。

1.2 实参传值错误。比如:实参类型为LPCWTR,经常都会因为字符串转换导致实参事与愿违。

网上的经验总结实例。某程序员经过一番周折后通过以下语句调用成功

hDll = LoadLibrary(TEXT("user32.dll"));

再经过一番百度google后发现,原来是字符格式惹的祸。

这里的LoadLibrary实际使用了LoadLibraryW而非LoadLibraryA,因此需要UNICODE字符串(宽字符串),而非窄字符串。 如下:

#ifdef UNICODE

#define LoadLibrary  LoadLibraryW

#else

#define LoadLibrary  LoadLibraryA

#endif // !UNICODE

在C/C++代码中,直接使用""定义的字符串为窄字节串,而windows头文件中提供的TEXT宏可以根据是否定义了UNICODE宏来自动选择字符串类型。

因此,利用TEXT宏使其自动选择了正确的字符集,dll调用成功。

(2)dll里有全局变量初始化失败或dllmain函数返回false。这种情况需要根据自己的业务代码具体分析排除与定位。

(3)64位进程调用了32位dll动态库的问题。

微软公司的官方网站针对这个问题描述如下:

在64位的windows系统中,一个64位进程不能加载一个32位dll,同理一个32位进程也不能加载一个64位dll。

如果您真都没有源码,只能如此“尴尬”的想正常运行,可以参见资料《64位进程调用32位dll的解决方法 / 程序64位化带来的问题和思考》

(4)其他原因

4.1 LoadLibrary函数跟LoadLibraryEx函数装载dll的机制不一样,前者在装载dll遇到与该dll依赖的其他dll时会自动装载,而后者不会。

网上有加载自己的dll无法成功的例子,排除路径问题的话(最好全路径),就要考虑该dll是否依赖到其它的dll。

Good Good Study, Day Day Up.

顺序 选择  循环 总结

LoadLibrary加载动态库失败相关推荐

  1. LoadLibrary加载动态库失败的解决办法

    方式一 采用LoadLibraryEx 转载:http://blog.sina.com.cn/s/blog_62ad1b8101017qub.html 若DLL不在调用方的同一目录下,可以用LoadL ...

  2. 加载动态库失败(loadLibrary返回为空)的几种解决办法

    如果遇到了以下几种问题,也许可以在本文找到解决方法: 一.版本更新后,原本正常的功能突然无法使用了: 二.VS编译的时候,弹出"xxx(win32):已加载"xx.dll" ...

  3. linux直接运行程序加载动态库失败,扣丁学堂Linux培训详解程序运行时加载动态库失败解决方法...

    今天扣丁学堂Linux培训老师给大家介绍一下关于Linux程序运行时加载动态库失败的解决方法,希望对同学们学习有所帮助,下面我们一起来看一下吧. Linux下不能加载动态库问题 当出现下边异常情况 . ...

  4. tableview动态修改和删除_Ubuntu加载动态库失败的解决方案

    在ubuntu下代码编译通过的情况下,经常出现运行时加载动态库出错的情况.这些问题很琐碎,不具备任何技术含量,纯属耽误时间,这也是linux系统的通病,花里胡哨,故弄玄虚. 为了减少初学者在这种无意义 ...

  5. php无法加载dll插件,php无法加载动态库怎么办

    php无法加载动态库的解决办法:1.将PHP的集成包里的"libmySQL.dll"复制到system32目录下:2.将PHP的解压目录添加到PATH里:3.在Apache的配置文 ...

  6. linux加载动态库问题

    当我们在linux系统引用动态库时,经常会遇到一个问题,加入我们需要的动态库没有在系统的默认目录下,我们编译时使用-L指定了动态库的路径,编译时没有问题,但是执行调用该动态库的可执行文件时,却提示找不 ...

  7. 使用Poco实现插件方式加载动态库

    动态库封装虚基类 //AbstractPlugin.h #ifndef __ABSTRACTPLUGIN_H__ #define __ABSTRACTPLUGIN_H__#include <st ...

  8. linux平台 加载动态库dlsym返回null

    linux 平台加载动态库通常使用dlopen,dlsym,dlclose三个函数实现 最近写了一个小程序,遇到dlsym总是调用失败返回空值,查找了很多相关的资料,确定动态库的创建有问题.下面是最初 ...

  9. Linux系统程序运行时加载动态库路径顺序

    程序运行时加载动态库路径顺序(Linux) 在linux系统中,如果程序需要加载动态库,它会按照一定的顺序(优先级)去查找: 链接时路径(Link-time path)和运行时路径(Run-time ...

最新文章

  1. 读书:个人成长 -- 即兴演讲
  2. Jquery ajax调用后台aspx后台文件方法(不是ashx)
  3. Java中HashMap的entrySet()你会用了吗
  4. pycharm之no python interpreter configured for project的解决办法
  5. (05)System Verilog 组合逻辑与时序逻辑区别
  6. 字体设计灵感|浓墨重彩!代表“墨”字设计案例
  7. 立创EDA元件转换为AD库封装(Altium Designer)
  8. 促进大数据发展行动纲要
  9. linux缺页异常,操作系统缺页异常
  10. Pixel: Multi-signatures for Consensus
  11. 修改 Windows 10 主题字体
  12. Spring懒加载机制原理和配置讲解
  13. SSM项目之电商系统-爱生鲜
  14. 人脸检测:《MTCNN》论文详解2016
  15. COI 2020 Semafor(矩阵乘法+优化)
  16. ios本地文件读取方法详解
  17. GD32F103C8T6点灯
  18. 良精商城网店购物系统网站源码V1.7.1+支持分销/有WAP
  19. html个性签名怎么写,手把手教你写出自己的个性签名
  20. 《Java必须知道的300个问题》读书总结

热门文章

  1. 设备树的引进与体验_使用设备树时的驱动编程
  2. 40-【什么叫规矩 什么叫体统】内置算法-排序
  3. 约瑟夫环 poj 3750 小孩报数问题 模拟
  4. Linux命令行中单引号和双引号的区别
  5. Photo Gallery
  6. DSP中 EALLOW 和 EDIS的作用
  7. 微信小程序添加、删除class’
  8. 网上图书购买系统(建模)
  9. 一文通透讲解Redis高级特性,多线程/持久化/淘汰机制等统统搞定
  10. Unity系列之Play模式设置颜色,避免忘记运行时编辑白费功夫!