Curl的curl_easy_perform函数在Debug正常,但在Release崩溃的解决方法

2014年3月7日星期五

Curl的curl_easy_perform函数在Debug正常,但在Release崩溃的解决方法

(1)    在VS2008的Release编译时,会出现很多个这样的警告:

warningLNK4099: PDB 'vc100.pdb' was not found with '../lib\libcurl.lib'

注意:在Release崩溃的时候,有可能会因为这些警告而产生,所以提高警告级别,在属性里面。这是防止Release崩溃的一个方法之一。

(我没有来得及去除这些警告)

(2)    在Release版本的预编译里,预定义为以下2个

WIN32

NDEBUG

在VS2008和VS2010属性里面设置:

加入的LIB:

libcurl.lib

Ws2_32.lib

Wldap32.lib

Advapi32.lib

libcurl_imp.lib

 [libcurl_imp.lib必须在Release里面增加,否则在执行curl的时候会崩溃!在Debug可以不要]

按照以上设置,libcurl_imp.lib没有也可能导致VS2008编译不过去。

以上是VS2010和VS2008,特别说明,

 

以上VS2008和VS2010编译的curl连接下载文件测试成功,

特别是Release.

 

总结:

Release版本需要libcurl_imp.lib库

预定义的时候,只需要WIN32,NDEBUG

 

测试成功,如果问题还存在,请可以参考以下的

//

以下是VS2010的设置

C++ Command lines

/I"include"/Zi /nologo /W3 /WX- /O2 /Oi /Oy- /GL /D "WIN32" /D"NDEBUG" /D "_UNICODE" /D "UNICODE" /Gm- /EHsc/MD /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Yu"StdAfx.h"/Fp"Release\curllib_app2010.pch" /Fa"Release\"/Fo"Release\" /Fd"Release\vc100.pdb" /Gd /analyze-/errorReport:queue

Link Command lines

/OUT:"E:******\Release\curllib_app2010.exe"/INCREMENTAL:NO /NOLOGO /LIBPATH:"../lib" "libcurl.lib""Ws2_32.lib" "Wldap32.lib" "Advapi32.lib""libcurl_imp.lib" "kernel32.lib" "user32.lib""gdi32.lib" "winspool.lib" "comdlg32.lib""advapi32.lib" "shell32.lib" "ole32.lib""oleaut32.lib" "uuid.lib" "odbc32.lib""odbccp32.lib" /MANIFEST /ManifestFile:"Release\curllib_app2010.exe.intermediate.manifest"/ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'"/DEBUG /PDB:"E:*****\Release\curllib_app2010.pdb" /SUBSYSTEM:CONSOLE/OPT:REF /OPT:ICF /PGD:"E:***\Release\curllib_app2010.pgd" /LTCG/TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:QUEUE

以下是VS2008的设置

C++ Command line

/Ox/Oi /I "../include" /D "WIN32" /D "NDEBUG" /D"_UNICODE" /D "UNICODE" /FD /EHsc /MD /Gy/Yu"stdafx.h" /Fp"Release\curllib_app2008.pch"/Fo"Release\\" /Fd"Release\vc90.pdb" /W3 /nologo /c /Zi /TP/errorReport:prompt

Link Command line

/OUT:"E:***\Release\curllib_app2008.exe"/INCREMENTAL:NO /NOLOGO /LIBPATH:"../lib" /MANIFEST/MANIFESTFILE:"Release\curllib_app2008.exe.intermediate.manifest"/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"*****\Release\curllib_app2008.pdb"/SUBSYSTEM:CONSOLE /OPT:REF /OPT:ICF /LTCG /DYNAMICBASE /NXCOMPAT /MACHINE:X86/ERRORREPORT:PROMPT libcurl.lib Ws2_32.lib Wldap32.lib Advapi32.liblibcurl_imp.lib kernel32.lib user32.libgdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.liboleaut32.lib uuid.lib odbc32.lib odbccp32.lib

 

以上问题害的我找了整整2个小时!!!总算解决了!

3/7/2014 10:52:32 AM

如果是LIB库,需要做成如下,尤其去掉clr,

libcurl_imp.lib不需要,否者会出现编译警告

Yes (/NODEFAULTLIB)


/Ox /Oi /I "../include" /D "WIN32" /D "NDEBUG" /D "_UNICODE" /D "UNICODE" /FD /EHsc /MDd /Gy /Yu"stdafx.h" /Fp"Release\lib_download.pch" /Fo"Release\\" /Fd"Release\vc90.pdb" /W3 /nologo /c /Zi /TP /errorReport:prompt


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值