Cocos2d-x中libcurl库的使用(1)查看库的版本信息

使用如下代码,可检测Cocos2d-x中使用的libcurl库的版本信息

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
#include "../cocos2d/external/curl/include/ios/curl/curl.h"
#endif

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include "../cocos2d/external/curl/include/android/curl/curl.h"
#endif

int getVersion()
{
    CURLcode  return_code;
    return_code = curl_global_init(CURL_GLOBAL_ALL);
    
    if(CURLE_OK != return_code)
    {
        log("init libcurl Failed");
        return -1;
    }
    
    log("curl_version=%s",curl_version());
    curl_version_info_data *p = curl_version_info(CURLVERSION_Now);
    log("curl_version_info_data = %u",p->version_num);
    curl_global_cleanup();
    return 0;
}

1、curl_global_init的参数flag

CURL_GLOBAL_ALLInitialize everything possible. This sets all kNown bits exceptCURL_GLOBAL_ACK_EINTR.

CURL_GLOBAL_SSLInitialize SSL

CURL_GLOBAL_WIN32Initialize the Win32 socket libraries.

CURL_GLOBAL_nothingInitialise nothing extra. This sets no bit.

CURL_GLOBAL_DEFAULTA sensible default. It will init both SSL and Win32. Right Now,this equals the functionality of theCURL_GLOBAL_ALLmask.

CURL_GLOBAL_ACK_EINTRWhen this flag is set,curl will ackNowledge EINTR condition when connecting or when waiting for data. Otherwise,curl waits until full timeout elapses. (Added in 7.30.0)

2、curl_version_info_data结构体

typedef struct {
  CURLversion age;          /* age of the returned struct */
  const char *version;      /* LIBCURL_VERSION */
  unsigned int version_num; /* LIBCURL_VERSION_NUM */
  const char *host;         /* OS/host/cpu/machine when configured */
  int features;             /* bitmask,see defines below */
  const char *ssl_version;  /* human readable string */
  long ssl_version_num;     /* not used anymore,always 0 */
  const char *libz_version; /* human readable string */
  /* protocols is terminated by an entry with a NULL protoname */
  const char * const *protocols;

  /* The fields below this were added in CURLVERSION_SECOND */
  const char *ares;
  int ares_num;

  /* This field was added in CURLVERSION_THIRD */
  const char *libidn;

  /* These field were added in CURLVERSION_FOURTH */

  /* Same as '_libiconv_version' if built with HAVE_ICONV */
  int iconv_ver_num;

  const char *libssh_version; /* human readable string */

} curl_version_info_data;
3、curl_global_init初始化libcurl,CURL_GLOBAL_ALL会使libcurl初始化所有的子模块和一些认的选项,这个一个比较好的认值

4、curl_global_cleanup,释放资源,curl_global_init和curl_global_cleanup只能被调用一次。

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...