在生成dll時(shí)候經(jīng)常出現lnk4070警告,盡管可能不會(huì )影響使用,但是也造成了一些麻煩諸如明明debug和release版本的lib名字不一樣,可是exe卻總是去找release版本的(debug的為結尾加了d的)。其實(shí)一直不曉得這個(gè)是怎么回事,也懶得去弄清楚了,反正能用就行了。今天看到一篇文章,恍然大悟!原來(lái)問(wèn)題在這里,就是這個(gè)小小的warning造成了這一切。
先轉帖如下: 引自地址http://hi.baidu.com/sonmeika/blog/item/726d47d0ccc5578ca1ec9c70.html
我在DLL項目中遇到了,因為要對Debug版和Release版分別指定不同的輸出文件名。對Debug版,我指定輸出文件為dllD.dll,對Release版指定為dllR.dll。
解決方法有兩個(gè):
(1)刪掉自動(dòng)生成的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.把這兩個(gè)文件都添加到項目中
3.只要在Debug項目的Setting中選中xx.def,在右邊的General中在Exclude file from built前打勾
同樣在Release項目的Setting中選中xxD.def,在右邊的General中在Exclude file from built前打勾
4.接下來(lái)就Betch Build吧
聯(lián)系客服