VS报错:pdflib.lib:error LNK2005:_PDF_boot already defined in ocrlib11.lib(p_basic.obj)

问题:

        首先说明一下这个报错内容,在我的电脑上装的VC6,编译一个旧的项目时出现了上百个错误,类型都是这样的,意思是pdflib中的_PDF_boot已经在ocrlib11.lib中定义过了,也就是ocrlib11.lib编译通过时已经把PDF_boot函数定义过了,现在有重定义。

 

解决思路:

        首先查找是不是项目依赖顺序的原因,如果是项目依赖顺序错误的话会有这种情况。按照项目正确顺序在配置中重新输入依赖顺序后,仍然会报错(步骤:项目右击-Setting-Link-分类-Input-对象/库模块)。随后也忽略了报错的lib,也是没用。

        那不如就把当前的项目依赖的lib顺序打印出来看看哪个lib连接时出现的问题。然后在(Input-Project Options)命令行添加一句:/verbose:lib。这样就会在编译时在输出窗口输出依赖的lib顺序。

        编译后看到顺序也没有问题,但是发现竟然会有第二次查找同一个lib的现象:也就是这句话"Searching: ..\lib\pdflib.lib"。因为这些依赖库我都是在项目属性中配置过的,一般只会查找一次,现在会出现两次查找同一lib,那我猜想会不会是在代码里有硬写入的lib库链接,CTRL+F下,代码里果然找到了罪魁祸首,在我的项目中有个pdflib.cpp文件,里面写了#pragma comment(lib, "..\lib\pdflib.lib"),这就是那个写死的硬链接,本来这样写的好处是项目在另外一台电脑上打开就不需要再修改响应的配置了,但现在我的配置和这块的内容重复了,导致报错的内容就是already defined。

        注释掉这句,编译成功!问题迎刃而解了!

 

参考资料:

https://stackoverflow.com/questions/51878996/error-lnk2005-xi-a-already-defined-in-msvcrt-libcinitexe-obj

https://blog.csdn.net/sazass/article/details/81475171

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值