libcurl升级后找不到libcurl.so.3解决之法

系统装的是libcurl 7.19的版本,编译的动态库是libcurl.so.4

自己的程序编译是在libcurl 7.15的版本下编译的,用的是libcurl.so.3的版本,要做下软链接即可:
根据自己使用的是32位系统或者64位系统 做如下处理:

 代码如下 复制代码

cd /usr/lib 或者 cd /usr/lib64
ln -s libcurl.so.4 libcurl.so.3

libcurl主要功能就是用不同的协议连接和沟通不同的服务器~也就是相当封装了的sockPHP 支持libcurl(允许你用不同的协议连接和沟通不同的服务器)。, libcurl当前支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传(当然你也可以使用PHP的ftp扩展), HTTP基本表单上传,代理,cookies,和用户认证。
 

给出我的一个简单的代码例子:
说明:
1.关键在curl_easy_setopt函数设置option,可以设置ftp,http,get,post等许多选项,请根据具体使用情况设置。

2.对取回来的数据需要进行判断,比如http下载文件,如果文件不存在,需要进行处理。因为writer是可以将buf填充404 not found等网页内容的,不能将这个内容当成文件内容,所以需要判断http web返回来的code,进行判断。

3.我有个问题,就是想得到服务器上filename的具体名称,verbose调试已经返回了,但是我在getinfo的时候,试过好多选项,但未找到这个存放真实服务器文件名的选项,如果有知道的麻烦告诉我,谢谢了!

 代码如下 复制代码

#include "curl/curl.h"
#pragma comment(lib, "libcurl.lib")

long writer(void *data, int size, int nmemb, string &content);
bool  CurlInit(CURL *&curl, const char* url,string &content);
bool  GetURLDataBycurl(const char* URL, string &content);

void main()
{
    char *url ="http://www.111cn.net";
    string content;
    if ( GetURLDataBycurl(url,content))
    {
        printf("%sn",content);

    }
    getchar();
}

bool CurlInit(CURL *&curl, const char* url,string &content)
{
    CURLcode code;
    string error;
    curl = curl_easy_init();
    if (curl == NULL)
    {
        printf( "Failed to create CURL connectionn");
        return false;
    }
    code = curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error);
    if (code != CURLE_OK)
    {
        printf( "Failed to set error buffer [%d]n", code );
        return false;
    }
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
    code = curl_easy_setopt(curl, CURLOPT_URL, url);
    if (code != CURLE_OK)
    {
        printf("Failed to set URL [%s]n", error);
        return false;
    }
    code = curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
    if (code != CURLE_OK)
    {
        printf( "Failed to set redirect option [%s]n", error );
        return false;
    }
    code = curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer);
    if (code != CURLE_OK)
    {
        printf( "Failed to set writer [%s]n", error);
        return false;
    }
    code = curl_easy_setopt(curl, CURLOPT_WRITEDATA, &content);
    if (code != CURLE_OK)
    {
        printf( "Failed to set write data [%s]n", error );
        return false;
    }
    return true;
}

long writer(void *data, int size, int nmemb, string &content)
{
    long sizes = size * nmemb;
    string temp(data,sizes);
    content += temp;
    return sizes;
}

bool GetURLDataBycurl(const char* URL,  string &content)
{
    CURL *curl = NULL;
    CURLcode code;
    string error;

    code = curl_global_init(CURL_GLOBAL_DEFAULT);
    if (code != CURLE_OK)
    {
        printf( "Failed to global init default [%d]n", code );
        return false;
    }
   
    if ( !CurlInit(curl,URL,content) )
    {
        printf( "Failed to global init default [%d]n" );
        return PM_FALSE;
    }
    code = curl_easy_perform(curl);
    if (code != CURLE_OK)
    {
        printf( "Failed to get '%s' [%s]n", URL, error);
        return false;
    }
    long retcode = 0;
    code = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE , &retcode);
    if ( (code == CURLE_OK) && retcode == 200 )
    {
        double length = 0;
        code = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD , &length);
        printf("%d",retcode);
        FILE * file = fopen("1.gif","wb");
        fseek(file,0,SEEK_SET);
        fwrite(content.c_str(),1,length,file);
        fclose(file);

        //struct curl_slist *list;
        //code = curl_easy_getinfo(curl,CURLINFO_COOKIELIST,&list);
        //curl_slist_free_all (list);

        return true;
    }
    else
    {
    //    debug1( "%s n ",getStatusCode(retcode));
        return false;
    }
    curl_easy_cleanup(curl);
    return false;
}

时间: 2024-11-18 15:18:12

libcurl升级后找不到libcurl.so.3解决之法的相关文章

Win8.1安装后找不到管理员账户的解决方法

  大家都知道系统管理员账户,即administrator账户拥有着操控系统的最高权限,一些特定文件需要在管理员账户下才可进行操作.但是最近在新的win8.1系统下,有用户反应win8.1系统安装完后却找不到管理员账户,这是怎回事?该怎么找回来呢? 解决Win8.1安装后找不到管理员账户的问题: 1.首先按"WIN+F"快捷键,点击"所有位置"; 2.再输入"CMD"在搜索出来程序上点击右键选择"以管理员身份运行". 3.进入

iOS 11升级后常见的几个问题与解决的建议

iOS 11 正式上线至今其安装率就已经达到了 38.5%.相比 iOS 10 发布两周的安装率,iOS 11 算是较低的(相对 Android 任一新版本的升级率来说已经算高了).而纵观苹果相关论坛,包括我们威锋论坛,就会发现其实不少的用户升级了 iOS 11 后又刷回了 iOS 10.3.3,而另有一部分用户或许还在观望,等待 iOS 11 更加稳定才升级. iOS 11 虽然带来了不少 UI 的更新和新功能,但一些存在的问题仍然让用户迟疑而不敢随便升级.本文将搜索威锋论坛与苹果官方论坛的用

Ruby升级后no such file to load -- readline解决办法_ruby专题

升级ruby和rails后进入script/consle出现: 复制代码 代码如下: /usr/local/lib/ruby/1.8/irb/completion.rb:10:in `require': no such file to load -- readline (LoadError)          from /usr/local/lib/ruby/1.8/irb/completion.rb:10          from /usr/local/lib/ruby/1.8/irb/in

win7旗舰版系统时开机按ESC后找不到u盘的解决方法

  原因分析: 开机按ESC无法找到U盘是因为BIOS设置里Legacy USB Support被关闭了,将它开启就行了. 1.首先在win7开机的时候按F2进入BIOS里边,到Advanced--USB Configuration--Legacy USB Support; 2.然后将值改成enable,F10保存退出,这样就可以了. ps:Legacy USB Support:此选项含义是在传统操作环境下支持USB设备,若为Disable状态,未进入系统将无法识别U盘,USB接口键盘等设备.

【CURL (LIBCURL) 开发 之一】COCOS2DX之LIBCURL(CURL_EASY)的编程教程(帮助手册)!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/curl-libcurl/878.html      注意:如果你的服务器是Java的,那么要注意数据之间的大端小端的处理:否则无法正常获取正确的数据! 本篇介绍使用libcurl编程的一般原则和一些基本方法.本文主要是介绍 c 语言的调用接口,同时也可能很好的适用于其他类 c 语言的接口. 跨平台的可移植代码 libcurl库背后的开发人员

ADT升级后Compile ExceptionUnable to instantiate activity ComponentInfo

今天将ADT升级后(adnroid SDK Tools从20升级到22, Android SDK Build-tools升级到17),突然所有程序不能启动了,报找不到R类,然后layout并没有错误,bin文件夹下也没有生成R.java类,后发现是Android SDK Tools等没有安装. 在Android SDK Manager中安装完Tools文件夹下tools后依然不能启动,异常如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

w8 系统升级-系统的升级后内存只剩下30多G了那些文件都可以清理啊

问题描述 系统的升级后内存只剩下30多G了那些文件都可以清理啊 系统的升级后内存只剩下30多G了那些文件都可以清理 啊,各位大神帮帮忙 解决方案 主要是program file progrem file(x86) windows windows.old这几个文件夹那个可以删掉 解决方案二: 你不懂的话,还是去找那些专业点的人教你,不然一不小心删了系统文件,就呵呵了 解决方案三: 缓存或者备份的都可以删除的,为什么不下一个系统优化大师之类的软件来帮你管理

外媒:应用升级后的谷歌地图PK中完胜苹果

硅谷网讯 据 美国科技博客"http://www.aliyun.com/zixun/aggregation/16417.html">BusinessInsider"7月10日报道,谷歌对iPhone.iPad. Android手机和平板的地图服务进行升级.而此前,苹果在发布iPhone软件新版本时,几乎未提及地图应用.报道 认为,在电子地图应用较量中,谷歌基本完胜苹果. 报道盘点了升级后地图应用的几大看点,其中包括: 1.速度 更快:极速的用户体验. 2.导航功能更强大

长安CS35升级后仍乳化车主要求厂家装回分离器

长安CS35乳化事件随着3月份长安发布解决方案告一段落,车主们原本期待厂家的解决方案能够完全解决问题,但随着解决方案的实施,让车主们再次遭遇到了难题.在3月底,中国质量万里行投诉部就车主投诉的情况反馈到长安售后部门,不过对于车主问题的解决情况长安厂家未给予回复.4月初开始,许多之前在我们这里反映乳化的车主再次发来投诉,说保温升级后再次出现乳化,许多车主要求厂家装回外置分离器.对此,车主们再次提出维权的理由.1.车辆机油乳化严重(厂家声称为乳化物),此乳化物并非厂家所声称的不参与机油循环,我们实际