Visual Studio2019使用nmake编译调用libcurl库

编译

1.下载地址:

curl downloads

我下载的是7.61.0

2.编译:

使用的是:VS2019 x64 本机工具命令提示,当然如果想编译成X86的库,可以选择VS2013 x86 本机工具命令提示或者VS2019 x64 兼容工具命令提示。
打开VS2019 x64 本机工具命令提示的快捷方式,进入libcurl源代码目录,进入winbuild下 

静态库debug

nmake /f Makefile.vc mode=static VC=16 DEBUG=yes MACHINE=x64

静态库release

nmake /f Makefile.vc mode=static VC=16  MACHINE=x64

动态库debug

nmake /f Makefile.vc mode=dll VC=16 DEBUG=yes MACHINE=x64

动态库release

nmake /f Makefile.vc mode=dll VC=16 MACHINE=x64

编译完成 默认会在源代码的顶层目录下创建builds文件夹,用于存放编译生成的文件。

如果不想要编译SSPI,IPV6,IDN,WINSSL,PDB,可以参考BUILD.WINDOWS.txt使用下面指令编译

nmake /f Makefile.vc mode=dll VC=16  MACHINE=x64 ENABLE_SSPI=no ENABLE_IPV6=no ENABLE_IDN=no ENABLE_WINSSL=no  GEN_PDB=no 

编译完成如下:

libcurl-vc16-x64-release-dll是编译最终头文件、库文件、可执行程序所在目录,include是curl库的头文件存放目录;lib库是库文件所在目录,里面有libcurl.lib文件;bin目录是生成的curl.exe可执行文件和libcurl.dll的dll文件所在目录

注意:

1.动态编译的时候也会生成一个.lib文件,这个文件和静态编译的.lib并不一样,动态编译生成的.lib非常小里面,里面是被调用时编译用到的一些链接,真正运行时执行的是函数是在.dll里面,静态编译出的.lib是完整的库。

使用

下面例子是动态编译的库调用方式

1.创建一个demo目录

 创建include文件夹,把前面编译的头文件curl复制进去

 

创建lib文件夹,把前面编译的libcurl.lib复制进去

 

创建src文件夹,里面创建一个demo.cpp文件

demo.cpp

#include <stdio.h>
#include <curl/curl.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    CURL *curl;             //定义CURL类型的指针
    CURLcode res;           //定义CURLcode类型的变量,保存返回状态码
    
    char url[] = "www.baidu.com";
    curl = curl_easy_init();        //初始化一个CURL类型的指针
    if (curl != NULL)
    {
        //设置curl选项. 其中CURLOPT_URL是让用户指 定url. url中存放的是网址
        curl_easy_setopt(curl, CURLOPT_URL, url);
        //调用curl_easy_perform 执行我们的设置.并进行相关的操作. 在这 里只在屏幕上显示出来.
        res = curl_easy_perform(curl);
        //清除curl操作.
        curl_easy_cleanup(curl);
    }

    return 0;
}

创建CMakelist.txt

cmake_minimum_required(VERSION 3.0.0)
project(test)

set(CURL_DIR D:/workspace/demo)

include_directories("include/")

add_executable(test
               src/demo.cpp)

set(CMAKE_BUILD_TYPE "Release")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

target_compile_features(test PRIVATE cxx_std_14)
target_link_libraries(test "${CURL_DIR}/lib/libcurl.lib")

2.编译:

在根目录下创建一个build目录,运行

cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release ..

然后执行nmake进行编译完成,之后会在build目录下生成一个test.exe文件

将上面编译的libcurl.dll复制到build目录下,运行test.exe即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值