我正在尝试使用Visual Studio 2015静态链接一个小的测试curl程序,但是我无法正确地进行链接。
我使用了这个批处理文件来编译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指令应该纠正这种行为。