fatal error C1047 解决方法

使用静态库的时候出现的问题,根据错误描述,怀疑是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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值