我正在尝试使用visual studio 2015静态链接一个小的测试卷曲程序,但是我不能让它正确链接.
我使用这个批处理文件来编译成功运行的curl https://github.com/blackrosezy/build-libcurl-windows
然后我将libcurl目录复制到我的项目目录中,我的代码如下
#include "stdafx.h" #include "libcurl/include/curl/curl.h" #pragma comment(lib, "libcurl/lib/static-debug-x64/libcurl_a_debug.lib") #define CURL_STATICLIB int main() { curl_global_init(CURL_GLOBAL_DEFAULT); CURL *curl = curl_easy_init(); if (curl) { CURLcode res; curl_easy_setopt(curl, CURLOPT_URL, "http://google.com"); res = curl_easy_perform(curl); curl_easy_cleanup(curl); } curl_global_cleanup(); printf("Press any key to continue\n"); getchar(); return 0; }
但无论我做什么,我都无法让我的链接器成长:
1>CurlTest.obj : error LNK2019: unresolved external symbol __imp_curl_global_init referenced in function main 1>CurlTest.obj : error LNK2019: unresolved external symbol __imp_curl_global_cleanup referenced in function main 1>CurlTest.obj : error LNK2019: unresolved external symbol __imp_curl_easy_init referenced in function main 1>CurlTest.obj : error LNK2019: unresolved external symbol __imp_curl_easy_setopt referenced in function main 1>CurlTest.obj : error LNK2019: unresolved external symbol __imp_curl_easy_perform referenced in function main 1>CurlTest.obj : error LNK2019: unresolved external symbol __imp_curl_easy_cleanup referenced in function main 1>U:\Main\Code\CurlTest\x64\Debug\CurlTest.exe : fatal error LNK1120: 6 unresolved externals
我已经确认所有这些路径都是有效的,并尝试使用调试和发布库,以及32位和64位(使用visual studio中的匹配设置).这将使用非静态库进行编译,但这是废话,因为我只想分发我的.exe而不是dll.
我在这做错了什么?这非常令人沮丧,看起来它只是幼稚,因为我从类似的线程中读到的#define CURL_STATICLIB指令应该纠正这种行为.
#pragma comment(lib, "wldap32.lib" ) #pragma comment(lib, "crypt32.lib" ) #pragma comment(lib, "Ws2_32.lib") #define CURL_STATICLIB #include
这使它对我有用.
希望它有所帮助,问候.