1. 程式人生 > >CURL 連結靜態庫

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