LoadLibrary调用失败原因
来源:互联网 发布:大数据开源项目 编辑:程序博客网 时间:2024/04/29 23:59
利用loadlibrary显示装载动态库:
HINSTANCE hDll; //DLL句柄
hDll = LoadLibrary("user32.dll");
if(hDll != NULL)
{
}
结果总是直接跳出if,dll加载失败
排除了其它问题后,通过以下语句调用成功
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调用成功。
PS:LoadLibrary函数跟LoadLibraryEx函数装载dll的机制不一样,前者在装载dll遇到与该dll依赖的其他dll时会自动装载,而后者不会,网上有加载自己的dll无法成功的例子,排除路径问题的话(最好全路径),就要考虑该dll是否依赖到其它的dll。
- LoadLibrary调用失败原因
- LoadLibrary调用失败原因
- Loadlibrary 失败的原因
- LoadLibrary失败的原因
- LoadLibrary 失败的一个原因
- 一次LoadLibrary调用失败的调试经历
- LoadLibrary失败
- LoadLibrary失败
- LoadLibrary失败
- LoadLibrary失败
- loadlibrary失败
- Win32 LoadLibrary 失败的2种可能原因
- VS2010 Loadlibrary失败【解决】
- XP系统loadLibrary失败
- loadlibrary加载失败问题
- loadlibrary 失败的解决方法
- 使用LoadLibrary调用DLL
- glMultiDrawElementsEXT 或 glMultiDrawElements 调用失败的原因
- 日常小计
- SQL中使用group by 及left outer join...on...
- JavaScript字符串截取、合并等操作
- 不要重复 DAO! 使用 Hibernate 和 Spring AOP 构建泛型类型安全的 DAO
- NYOJ--290--动物统计加强版(字典树简单运用)
- LoadLibrary调用失败原因
- 排序算法之直接插入排序
- JPA概要
- TortoiseSVN :提交后,如何修改log
- Running awk Without Input Files【每日一译】--20130204
- 安家第一篇测试
- Ubuntu 中软件的安装、卸载以及查看的方法总结
- Oracle默认帐号密码
- ASP.NET数据库连接字符串总结