1 编译libcurl静态库
确保C/C++页面下代码生成/运行库确保跟解决方案保持一致,确保常规下输出路径和目标文件名称(d)
2 C/C++属性页面中的预处理器属性页设置定义
_DEBUG
BUILDING_LIBCURL
DEBUGBUILD
CURL_STATICLIB
HTTP_ONLY
USE_WINDOWS_SSPI
USE_SCHANNEL
USE_WINDOWS_SSPI和USE_SCHANNEL两个预编译处理定义是用来定义HTTPS,为了使用https协议须要指定,切记!curl
2 连接错误分析
1)error LNK2019: 没法解析的外部符号 __imp__curl_easy_init,该符号在函数 _main 中被引用
分析:不定义CURL_STATICLIB 编译结果,由于CURL_EXTERN CURL *curl_easy_init(void);函数以前有CURL_EXTERN定义,而该定义在
#if (defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__)) && \
!defined(CURL_STATICLIB)
#if defined(BUILDING_LIBCURL)
#define CURL_EXTERN __declspec(dllexport)
#else
#define CURL_EXTERN __declspec(dllimport)
#endif
#else
这里被定义,若是没有定义CURL_STATICLIB,将会致使CURL_EXTERN被替换成__declspec(dllexport)或者__declspec(dllimport),这两个声明只应用于动态连接,不能应用于静态连接ide
2)error LNK2019: 没法解析的外部符号 __imp__ldap_init,该符号在函数 __ldap_free_urldesc 中被引用
在引用项目的属性中添加额外的静态库Crypt32.lib,Wldap32.lib,不然出现以下的错误,由于用到https函数
修订:
2019/7/20 理解在预编译头定义CURL_STATICLIB的意义url