VS2013(通过Visual Studio Tools)编译libcurl库

参考: https://blog.csdn.net/cym1990/article/details/79851039

编译

  1. https://github.com/curl/curl下载源码,这里我们选择的是curl-7_65_2;
  2. 进入到下载的源码文件夹中,双击buildconf.bat文件运行;
  3. 进入curl文件夹中的“winbuild”文件夹,并复制其文件夹路径,例如:E:\xxxxxxxxxx\curl-curl-7_65_2\winbuild;
  4. 打开开始菜单,在vs2013下的Visual Studio Tools中,(若要编译64位)选择"适用于 VS 2017 的 x64 本机工具命令提示",(若要编译32位)选择"适用于 VS 2017 的 x86 本机工具命令提示",右键以管理员身份运行,这里我们选择编译32位的;
  5. 进入vs2013 x86本机工具到命令行中,输入命令: cd  /d   E:\xxxxxxxxxx\curl-curl-7_65_2\winbuild,进入到此目录;
  6. 输入编译命令: nmake /f Makefile.vc mode=static VC=12  MACHINE=x86   然后回车,等待编译完成;
  7. 编译完成后,在build目录下生成相应库文件,库文件包括include、lib、bin三个目录。

注,这里我们编译的是32位的静态库,release版本。    

  • 若要编译动态库,将“mode=static”改为“mode=dll”。 
  • 若需要编译debug版,将“DEBUG=no”改为“DEBUG=yes”,DEBUG项未设置时默认为release版本。
  • 若需要编译64位版本,将“MACHINE=x86”改为“MACHINE=x64”。 
  • 若要使用其他版本Visual Studio进行编译,“VC=”后面的数字应该改为该Visual Studio版本。

新建工程进行测试

建一个空的工程,添加如下代码:

#include "include/curl/curl.h"  
 
int main()  
{  
    curl_easy_init();  
    return 0;  
}  

并将编译生成的文件夹中的“include”文件夹和“lib”文件夹添加至工程。

将静态库“libcurl_a.lib”添加至工程。 

由于我们是静态编译libcurl,需将“CURL_STATICLIB”添加至工程的预处理中。 

可能遇到的错误及解决方法:

错误一: 无法解析的外部符号 __imp__curl_easy_init

libcurl没有链接到程序中,找不到这个函数入口。

解决方案:打开项目属性,配置属性 - C/C++ - 预处理器 - 预处理器定义 - 打开下拉框 - 编辑 - 文本框输入CURL_STATICLIB - 保存

(或者在curl.h中#define CURL_STATICLIB)

错误二: 无法解析的外部符号 __imp__CertOpenStore@20

解决方法:在 项目属性 - 链接器 - 输入 - 附加依赖项 中加入: Crypt32.lib 即可。

错误三: 无法解析的外部符号 __imp__IdnToAscii@20

解决方法:在 项目属性 - 链接器 - 输入 - 附加依赖项 中加入:Normaliz.lib 即可。

错误四: 无法解析的外部符号 __imp__WSAStartup@8

无法解析的外部符号 __imp__ldap_init

解决方法:在 项目属性 - 链接器 - 输入 - 附加依赖项 中加入:ws2_32.lib,wldap32.lib 即可。

参考:https://blog.csdn.net/px41834/article/details/81627170

猜你喜欢

转载自blog.csdn.net/lt4959/article/details/96475906