在生成dll时候经常出现lnk4070警告,尽管可能不会影响使用,但是也造成了一些麻烦诸如明明debug和release版本的lib名字不一样,可是exe却总是去找release版本的(debug的为结尾加了d的)。其实一直不晓得这个是怎么回事,也懒得去弄清楚了,反正能用就行了。今天看到一篇文章,恍然大悟!原来问题在这里,就是这个小小的warning造成了这一切。
先转帖如下: 引自地址http://hi.baidu.com/sonmeika/blog/item/726d47d0ccc5578ca1ec9c70.html
我在DLL项目中遇到了,因为要对Debug版和Release版分别指定不同的输出文件名。对Debug版,我指定输出文件为dllD.dll,对Release版指定为dllR.dll。
解决方法有两个:
(1)删掉自动生成的dll.DEF文件,在代码中使用_declspec(dllexport)导出函数;
(2)删掉dll.DEF文件中LIBRARY字段后面双引号及其内部的库名即可,也可以将其改掉。如改为:******************************************************************************************
dll.def : Declares the module parameters for the DLL.
LIBRARY "dllD"
DESCRIPTION 'dll Windows Dynamic Link Library'
EXPORTS ; Explicit exports can go here
******************************************************************************************
还有更好方法:
1.生成两份DEF文件,
xx.def //Release版本
xxD.def //Debug版本
2.把这两个文件都添加到项目中
3.只要在Debug项目的Setting中选中xx.def,在右边的General中在Exclude file from built前打勾
同样在Release项目的Setting中选中xxD.def,在右边的General中在Exclude file from built前打勾
4.接下来就Betch Build吧
联系客服