• 7480阅读
  • 7回复

关于windows下的.a文件,到底干哈儿兹用的??? [复制链接]

上一主题 下一主题
离线rockyluo
 

只看楼主 倒序阅读 楼主  发表于: 2010-08-06
做了一个工程,产生的目标文件为一个lib(pro文件中指定“TEMPLATE = lib”)
编译过后在目录下产生了两个文件:
***.dll   和   ***.a
dll肯定是我最终要的库文件咯,但这个.a文件是干嘛的???
linux下倒是分动态库.so 和 静态库.a
不知我上面产生的这个.a是不是就是linux下的.a库文件
但我这是windows底下啊   为何会产生.a文件嘞???   纳闷!!!

使用时,如果只指定了dll文件,最后链接会出现“undefined reference ......”之类的错误
同时指定dll和a文件后,链接才能通过。
今后再编译时哪怕删掉.a文件,编译链接都可通过了。      再次纳闷!!!

这里.a到底干嘛吃的啊???


顺便说下我编译的环境:
win7(32位)  +   Creator 2.0   +  Qt 4.6.3
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线dbzhang800

只看该作者 1楼 发表于: 2010-08-06
还不就是 windows 搞得这一套:一个动态库,使用时不止需要一个头文件 ,还需要一个导入库
离线paranoid
只看该作者 2楼 发表于: 2010-08-06
准确的说是msvc的需要,mingw通常可以不需要导入库
离线rockyluo

只看该作者 3楼 发表于: 2010-08-06
谢谢楼上二位    让我知晓了“导入库”这么个玩意儿
拉个“导入库”的百科链接      http://baike.baidu.com/view/2778674.htm

to dbzhang800:
既然是Windows搞得这一套,此处为何产生一个名为"***.a"的导入库,Windows下的导入库不是“***.lib”么
莫非这是mingw搞得鬼,这也搞得太有歧义了


to paranoid:
最后链接时使用的是mingw的ld啊,看来“mingw通常可以不需要导入库”说法欠妥咯?!
                                                                                                              我们要团结一心,秉承Linux的开源精神,共享Qt问题的解决方法!
离线dbzhang800

只看该作者 4楼 发表于: 2010-08-06
引用第3楼rockyluo于2010-08-06 12:25发表的  :
谢谢楼上二位    让我知晓了“导入库”这么个玩意儿
拉个“导入库”的百科链接      http://baike.baidu.com/view/2778674.htm
to dbzhang800:
既然是Windows搞得这一套,此处为何产生一个名为"***.a"的导入库,Windows下的导入库不是“***.lib”么
.......


1. 不是很容易理解么,msvc静态库后缀 是 .lib,导入库也用 .lib
    Mingw 静态库后缀是 .a, 导入库也用 .a

   不就是后缀名嘛,只要你喜欢你可以随便给它取名字。

2. 导入库 对 Mingw 来说是可选的,链接时也可直接用 动态库(这也是linux下的常规用法)
离线watera
只看该作者 5楼 发表于: 2010-08-07
mingw也可以产生*.lib的导入库供msvc使用,
mingw也可以用msvc产生的*.lib
离线paranoid
只看该作者 6楼 发表于: 2010-08-07
mingw不能直接生成可供msvc使用的lib
离线besterboy
只看该作者 7楼 发表于: 2011-04-07
请问.a能直接当.lib用在vc环境下吗? 如果不能,QT怎么生成VC能用的.lib文件啊?
快速回复
限100 字节
 
上一个 下一个