zoukankan      html  css  js  c++  java
  • 引用MinGW生成的.dll.a后出现的问题

    以前很少调用MinGW的运行时库,现在用到一个项目,用到了glib和gettext等。
    遇到了一个问题,折腾了一个下午。
    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后再导入,一切正常。

    总结一下遇到的问题

    1. .dll.a,.a和.lib不一样,像libx264.a等vs可以直接导入,我遇到的这个就不可以直接导入(实际上,我的DEBUG可以正常生成和运行,RELEASE生成是没问题的,只是运行时出现上述问题,说明链接生成时是错误的,)。
    2. gettext有很多版本,网上下载一个msvc的版本可以直接用,但是要在安装机器上部署多个不同版本的.dll,会使安装包没必要的增大。
    3. dll是可以生成.lib的,以后.a还是别用了,如果官方没提供,就自己生成一个吧(.h文件没办法生成)。
  • 相关阅读:
    sql 拼写
    五、URL Routing介绍
    六、防止JavaScript注入攻击
    七、创建自定义的HTML Helper
    二、理解Models,Views,Controllers
    一、使用ASP.NET MVC创建应用程序
    自己写的临时表应用
    四、理解视图层,视图数据和HTML辅助
    三、理解控制器、控制器动作和ActionResults
    Extensions (扩展)方法
  • 原文地址:https://www.cnblogs.com/sanghg/p/4433885.html
Copyright © 2011-2022 走看看