fatal error C1047 解决方法

来源:互联网 发布:java办公自动化系统 编辑:程序博客网 时间:2024/06/06 05:28
使用静态库的时候出现的问题,根据错误描述,怀疑是lib不兼容,且我的lib是VS2005编写的,而引入lib却是在VS2008下。

根据MSDN的提示,似乎只能把lib的工程转换为VS2008的工程并重新编译才能解决,但仔细思索之后感觉这个现象实在不符合逻辑,向下兼容是这种工具最基本的要求。

进行了一些尝试,解决方法如下:

打开lib的工程,依旧使用VS2005,在Release模式下:project属性->General->Project Defaults分栏下的 Whole Program Optimization 由 Use Link Time Code Generation 改为No  Whole Program Optimization 即可。

个人理解,如果静态库进行了优化,那么引入它的工程就无法获得完整的信息,于是有出错的可能(特别是又跨了版本),而静态库尽量保存完整的信息,优化交给引入的工程来做,如此也比较符合逻辑。欢迎大家斧正。


PS:如果lib的工程自己没有,那么在引入它的工程进行上述的设置也能避掉错误,但似乎程序就完全没有优化了,似乎不妥。

补充:在引入 lib 的工程编译到 link 阶段,出现 warning LNK4099: PDB 'vc80.pdb' was not found 警告,解决方法是,打开 lib 工程,在 project属性->General->Debug Information Format 项设置为 C7 Compatible (/Z7)

原创粉丝点击