我知道这是编程问题,但我只是想弄清楚我做错了什么......
我正在使用visual studio 2010并按照此处的所有步骤进行操作:http://curl.haxx.se/libcurl/c/visual_studio.pdf
当我尝试编译我的解决方案时,我不断收到此错误:
1>------ Build started: Project: LibCurl, Configuration: Debug Win32 ------
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_cleanup referenced in function _main
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_perform referenced in function _main
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_setopt referenced in function _main
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_init referenced in function _main
1>C:\Users\Kyle\Documents\Visual Studio 2010\libcurl\VisualStudio\LibCurl\Debug\LibCurl.exe : fatal error LNK1120: 4 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
来源:
// LibCurl.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://google.com");
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}
答案 0 :(得分:81)
我一直在使用libcurl的静态版本,为了正确地链接我的程序,我不得不添加定义:
<强> CURL_STATICLIB 强>
构建我的项目配置。
答案 1 :(得分:20)
除了定义CURL_STATICLIB
之外,还有必要链接以下依赖项(包括libcurl.lib
或libcurld.lib
):
Ws2_32.lib
Wldap32.lib
答案 2 :(得分:4)
我遇到了同样的问题。我写了我最终能够使 CurlLib 如何工作,这里: http://quantcorner.wordpress.com/2012/04/08/using-libcurl-with-visual-c-2010/如果你想看看。祝你好运!
答案 3 :(得分:4)
我遇到了类似的问题 - 发现我引用了libcurl.lib的64位位置。将链接目录更改为32位位置,项目编译完美。
答案 4 :(得分:2)
看起来这些库没有成功链接。确保库目录设置为包含libcurl dll的完整路径。还要确保该库实际上已添加到您的项目中。
答案 5 :(得分:1)
我遇到了同样的错误,我遇到的问题是我根据 this SO 答案构建了 cURL,如果您希望 /MT 作为运行时库选项,这将不起作用。
为了构建与 /MT 和 /MTD 相关的 cURL,您还必须先执行 Set RTLIBCFG=static
,然后再在同一个控制台中使用 nmake
命令实际构建它。以这种方式构建cURL的完整过程可以在here找到。
编辑: 如果 URL 停止工作,我也会将说明放在这里:
Set RTLIBCFG=static
并按 Enter。这将设置编译器以针对 /MT 和 /MTd 进行构建。nmake /f MakeFile.vc mode=static DEBUG=yes
以构建调试版本或nmake /f MakeFile.vc mode=static DEBUG=no
以构建发布版本。答案 6 :(得分:0)
经过许多想法和配置后,我解决了这个问题:
#pragma comment(lib, "lib/libcurl_a.lib")
其中libcurl_a.lib
是curl lib文件的名称,lib
是包含它的文件夹。