CURL 連結靜態庫
一、 編譯屬於你的 CURL
下載最新版本 CURL : curl-7.54.0;
開啟你的 vs 等ide 的命令提示符視窗
編譯成功後: 在../Builds目錄下查詢 你要所需要的lib 庫
二、靜態連結庫使用:
當程式中使用 lib 庫進行編譯時候提示:
在編譯的時候出現問題如下:
無法解析的外部符號 __imp__curl_slist_free_all
無法解析的外部符號 __imp__curl_easy_cleanup
無法解析的外部符號 __imp__curl_easy_getinfo
無法解析的外部符號 __imp__curl_easy_setopt
無法解析的外部符號 __imp__curl_slist_append
無法解析的外部符號 __imp__curl_easy_init
無法解析的外部符號 __imp__curl_global_init
無法解析的外部符號 __imp__curl_easy_perform
解決方法 2種:
具體步驟就是:
1、給工程新增依賴的庫:專案->屬性->連結器->輸入->附加依賴項,把libcurl.lib ws2_32.lib winmm.lib wldap32.lib新增進去
注意,debug配置用libcurld.lib
2、加入預編譯選項:專案->屬性->c/c++ ->前處理器->前處理器,把 ;BUILDING_LIBCURL;HTTP_ONLY複製進去(注意不要丟了";")
注意: 改lib 庫要放在 程式的目錄下邊
第二種方式:
#define CURL_STATICLIB //必須在包含curl.h前定義
#include "curl\curl.h"
#pragma comment ( lib, "libcurl_a.lib" )
#pragma comment ( lib, "ws2_32.lib" )
#pragma comment ( lib, "winmm.lib" )
#pragma comment ( lib, "wldap32.lib" )
最近在使用MFC 的時候 ,發現 c run time 只支援 MD 導致在win2000下缺少各種庫。 所以重新編譯了下靜態連結:
加上 RTLIBCFG=static 就是/MT 了
也可以解決 : 問題
1>msvcrt.lib(MSVCR90.dll) : error LNK2005: __read already defined in libcmt.lib(read.obj)
1>msvcrt.lib(MSVCR90.dll) : error LNK2005: __write already defined in libcmt.lib(write.obj)
1>msvcrt.lib(MSVCR90.dll) : error LNK2005: __close already defined in libcmt.lib(close.obj)
1>msvcrt.lib(MSVCR90.dll) : error LNK2005: __open already defined in libcmt.lib(open.obj)
1>libcmt.lib(crt0init.obj) : warning LNK4098: defaultlib 'msvcrt.lib' conflicts with use of other libs; use /NODEFAULTLIB:library
1>E:\MFC\SignMonitor\SignMonitor\Release\SignMonitor.exe : fatal error LNK1169: one or more multiply defined symbols found
以上就能解決 靜態庫 連結問題: 如有問題或者 更好的方式:請聯絡 Q 1005252070
推廣下視訊店鋪:1元視訊:https://shop149700502.taobao.com/?spm=a313o.7775905.1998679131.d0011.0D5aDV