码迷,mamicode.com
首页 > 其他好文 > 详细

minGW的静态库和动态库

时间:2015-06-16 06:39:18      阅读:1882      评论:0      收藏:0      [点我收藏+]

标签:

minGW是用来把linux程序编译为windows上可用的软件。

mingw编译出来的静态库后缀名为.a,编译出来的动态库后缀名为.dll,编译出来的动态库的导入库后缀名为.dll.a,而在windows下后缀名为.lib的库可能是静态库也可能是动态库的导入库。

mingw编译出来的动态库的导入库(即xxx.dll.a,或者静态库,即xxx.a)可以直接在vc中直接使用,例如

#pragma comment(lib, "libx264.dll.a")

这样你就不需要生成一个.lib后缀的动态库的导入库了,网上也有如何从.dll生成.lib的方法。

如果链接了动态库的导入库libpthread.dll.a,你发布的应用程序就要带上pthread的dll。
使用静态库的好处是发布的应用程序组件模块里不需要带上相关的dll,如果要使用mingw编译出来的静态库,可以如下:

#pragma comment(lib, "libx264.a")

但是仅仅链接这么一个静态库是不够的,你还需要链接

libgcc.a

libmingwex.a

你可能还需要链接libmsvcrt.a

否则会报一堆错误:error LNK2001: 无法解析的外部符号

上面的这些库在C:\MinGW\lib目录或子目录下面可以找到。

链接这些库的原因是mingw使用的gcc编译器和vc编译器之间存在差异。

 

minGW的静态库和动态库

标签:

原文地址:http://www.cnblogs.com/liyou-blog/p/4579597.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!