静态库编译和连接遇到的奇怪问题

来源:互联网 发布:淘宝旺铺导航条 编辑:程序博客网 时间:2024/05/21 11:14

在编译静态库(lib)时,遇到过的三种问题:

1,  如果没有正确包含lib文件的路径,会提示无法打开静态库。

2,  error LNK 2001: 有可能是路径问题,或者是头文件与lib库不对应,或者是lib文件有问题。

3,  error LNK 2005: 这个错误是微软设计错误,因此如果遇到这个错误,我们只能躲过这个链接错误。具体的办法就是将那个提示出错的库放到另外一个库的前面。另外选择不同的C函数库,可能会引起这个错误。MS C有两种C函数库,一种是普通的函数库:LIBC.LIB,不支持多线程。另外一种是支持多线程的:msvcrt.lib。如果一个工程里,这两种函数库混合使用,可能会引起这个错误。因此建议使用支持多线程的msvcrt.lib

需要注意的是,当使用其他的库的时候最容易产生这种错误,例如boostwxWindow使用/MD来编译的,也就是使用支持多线程的C函数库。这时候如果自己的程序没有指明/MD的话,就会提示两种C函数冲突,并且还有LNK2005错误。因此如果使用boost,wxWindow的话,需要指明/MD

 

我在工程设置中,把出错的静态库,在工程设置中放在了所有库的最前面,结果真的没有问题了。
原创粉丝点击