您的位置:首页 > 其它

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

2007-12-25 20:19 274 查看
在编译静态库(lib)时,遇到过的三种问题:
1,  如果没有正确包含lib文件的路径,会提示无法打开静态库。
2,  error LNK 2001: 有可能是路径问题,或者是头文件与lib库不对应,或者是lib文件有问题。
3,  error LNK 2005: 这个错误是微软设计错误,因此如果遇到这个错误,我们只能躲过这个链接错误。具体的办法就是将那个提示出错的库放到另外一个库的前面。另外选择不同的C函数库,可能会引起这个错误。MS, C有两种C函数库,一种是普通的函数库:LIBC.LIB,不支持多线程。另外一种是支持多线程的:msvcrt.lib。如果一个工程里,这两种函数库混合使用,可能会引起这个错误。因此建议使用支持多线程的msvcrt.lib。

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

我在工程设置中,把出错的静态库,在工程设置中放在了所有库的最前面,结果真的没有问题了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多线程 c 微软