引用MinGW生成的.dll.a后出现的问题
2015-04-17 07:36
197 查看
以前很少调用MinGW的运行时库,现在用到一个项目,用到了glib和gettext等。
遇到了一个问题,折腾了一个下午。
gettext的运行时库之一是intl,MinGW只提供了.dll.a,于是参考了网上其它的介绍,像其它.lib一样调用
无法定位程序输入点 GdiplusStartup于动态链接库libintl-8.dll上。
我坚信libintl没有用到GDI+,Depends查看dll后证明了我的观点,但是Depends查看引用它的exe,却发现exe认为GdiplusStartup在libintl.dll上。
只能证明一个问题,.dll.a和.lib不一样。
那么需要找到相应的.lib,网上有自己编glib的办法,看了看,环境搭建也比较复杂。后来想到一个问题,lib不过是dll导出库的一个说明,那么一定有办法通过dll生成lib。网上搜了后的确如此,意识到自己真的很土。
按网上说的下载pexports生成.def,然后lib命令生成dll后再导入,一切正常。
总结一下遇到的问题
.dll.a,.a和.lib不一样,像libx264.a等vs可以直接导入,我遇到的这个就不可以直接导入(实际上,我的DEBUG可以正常生成和运行,RELEASE生成是没问题的,只是运行时出现上述问题,说明链接生成时是错误的,)。
gettext有很多版本,网上下载一个msvc的版本可以直接用,但是要在安装机器上部署多个不同版本的.dll,会使安装包没必要的增大。
dll是可以生成.lib的,以后.a还是别用了,如果官方没提供,就自己生成一个吧(.h文件没办法生成)。
遇到了一个问题,折腾了一个下午。
gettext的运行时库之一是intl,MinGW只提供了.dll.a,于是参考了网上其它的介绍,像其它.lib一样调用
pragma comment(lib, "libintl.dll.a")
结果就出现了无法定位程序输入点 GdiplusStartup于动态链接库libintl-8.dll上。
我坚信libintl没有用到GDI+,Depends查看dll后证明了我的观点,但是Depends查看引用它的exe,却发现exe认为GdiplusStartup在libintl.dll上。
只能证明一个问题,.dll.a和.lib不一样。
那么需要找到相应的.lib,网上有自己编glib的办法,看了看,环境搭建也比较复杂。后来想到一个问题,lib不过是dll导出库的一个说明,那么一定有办法通过dll生成lib。网上搜了后的确如此,意识到自己真的很土。
按网上说的下载pexports生成.def,然后lib命令生成dll后再导入,一切正常。
总结一下遇到的问题
.dll.a,.a和.lib不一样,像libx264.a等vs可以直接导入,我遇到的这个就不可以直接导入(实际上,我的DEBUG可以正常生成和运行,RELEASE生成是没问题的,只是运行时出现上述问题,说明链接生成时是错误的,)。
gettext有很多版本,网上下载一个msvc的版本可以直接用,但是要在安装机器上部署多个不同版本的.dll,会使安装包没必要的增大。
dll是可以生成.lib的,以后.a还是别用了,如果官方没提供,就自己生成一个吧(.h文件没办法生成)。
相关文章推荐
- matlab2012生成的dll调用出现无法初始化,libmx.dll找不到等问题
- VS开发环境下生成和调用dll出现的问题和解决方法-1
- CLion+MinGW CMake进行静态链接,解决程序出现缺少libgcc_s_dw2-1.dll问题
- 遭遇 VS 的 无法调试引用的类库项目(DLL)问题(生成下面的模块时,启用了优化或没有调试信息)
- C# 解决引用dll,出现dll不可以使用等问题
- 遭遇 VS 的 无法调试引用的类库项目(DLL)问题(生成下面的模块时,启用了优化或没有调试信息)
- VS 2010 的 无法调试引用的类库项目(DLL)问题(生成下面的模块时,启用了优化或没有调试信息) 解决方案
- VC++引用MFC DLL出现的问题
- 用 mingw 生成 ole com dll 的一些问题
- C#调用MFC程序DLL库——MFC项目DLL生成问题、DLL引用链问题、DLL读取配置文件路径问题
- 解决添加Com引用 生成的Interop.*.dll 版本号永远是1.0的问题
- 引用第三方库lib/dll出现的无法解析的外部符号问题
- 关于MinGW编译程序出现缺少libgcc_s_dw2-1.dll问题
- 未将对象引用设置到对象的实例--可能出现的问题总结
- 通过Hibernate code generation configration反向生成实体类出现的问题
- 生成sis文件过程中出现问题了。。。
- mono for andorid 引用外部的dll问题
- 未将对象引用设置到对象的实例 - 可能出现的问题总结
- 【WinCE】WinCE程序开发中出现“无法找到PInvoke DLL"Kernel32.dll"”问题的一种解决方法
- [2014.1.31] Eclipse、MinGW、JNI编写C++生成dll, Java端调用的完整示例(附java.lang.UnsatisfiedLinkError解决方法)