在前面的线程Building curl 7.46.0之后,我测试了下面的示例代码,它没有错误地编译,但在我的控制台上没有打印任何内容。
#include <iostream>
#include <WinSock2.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://www.cnn.com/");
system("pause");
res = curl_easy_perform(curl);
/* always cleanup */ curl_easy_cleanup(curl);
}
//system("pause");
return 0;
}这是由于安装libcurl时采用的设置造成的吗?事实上,为了获得libcurl.dll和libcurl.lib,我使用了:
1 -(发布模式):nmake /f Makefile.vc mode=dll VC=12
2 -(调试模式):nmake /f Makefile.vc mode=dll VC=12 DEBUG=yes
最好的
期望:有点像

编辑:有效代码
#include<string>
#include <WinSock2.h>
#include <stdio.h>
#include <curl/curl.h>
int main(void)
{
CURL *curl = curl_easy_init();
if (curl) {
CURLcode res;
curl_easy_setopt(curl, CURLOPT_URL, "http://edition.cnn.com/");
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
system("pause");
}
}发布于 2015-12-15 15:15:09
的文件
setopt.html
建议,您需要指定一个回调函数,它将将html写入某个缓冲区。然后,您可以使用该缓冲区打印内容。以下是你是如何做到的:
#include <iostream>
#include <WinSock2.h>
#include <stdio.h>
#include <curl/curl.h>
#include <string>
static size_t getHtmlCallback(void *contents, size_t size, size_t nmemb, void *ptr)
{
// Cast ptr to std::string pointer and append contents to that string
((std::string*)ptr)->append((char*)contents, size * nmemb);
return size * nmemb;
}
int main(void)
{
CURL *curl;
CURLcode res;
std::string htmlBuffer;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://www.cnn.com/");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, getHtmlCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &htmlBuffer);
res = curl_easy_perform(curl);
if(CURLE_OK == res)
{
std::cout << htmlBuffer << std::endl;
}
curl_easy_cleanup(curl);
}
return 0;
}发布于 2015-12-15 15:17:31
看来libcurl正在失败(即curl_easy_init正在返回NULL)。可悲的是,根据http://curl.haxx.se/mail/lib-2009-11/0243.html的说法,你必须使用调试器来找出原因。
https://stackoverflow.com/questions/34291334
复制相似问题