Visual Studio2019使用nmake编译调用libcurl库

article/2025/10/16 14:34:06

编译

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(testsrc/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即可


http://chatgpt.dhexx.cn/article/sOrJboG4.shtml

相关文章

cl.exe nmake.exe

1. 如果已经有vc6的dsp工程&#xff0c;可直接导出nmake脚本文件(.mak) “Project - Export Makefile...” nmake -f nMakeTest.mak CFG"nMakeTest - Win32 Debug" nmake -f nMakeTest.mak CFG"nMakeTest - Win32 Debug" all nmake -f nMakeTest.mak CFG&q…

Windows环境下用nmake编译libevent

Windows环境下用nmake编译libevent 一、方法总结1) nmake 命令找不到2) 头文件找不到3) lib库找不到4) 不知道如何生成“print-winsock-errors.obj” 二、详细说明1、nmake 和 cl 命令2、各种头文件缺失3、lib 库无法打开4、“print-winsock-errors.obj” 三、结语 最近在将一个…

nmake、makefile、cmake学习笔记

1.nmake 1.1 nmake reference NMAKE.EXE是Visual Studio附带的一个命令行工具&#xff0c;它基于描述文件中包含的命令生成项目。 要使用NMAKE&#xff0c;必须在开发人员命令提示符窗口中运行它。开发人员命令提示符窗口为工具、库设置了环境变量&#xff0c;并包含在命令行…

cmake nmake qmake 的区别联系

&#x1f447;推荐关注&#x1f447; 经常记不住这几个概念&#xff0c;都看了几次了还是容易忘&#xff0c;为以后方面查阅&#xff0c;故而从知乎上复制粘贴过来。 1、gcc是GNU Compiler Collection&#xff08;就是GNU编译器套件&#xff09;&#xff0c;也可以简单认为是编…

VC++NMAKE

目 录 第1章 NMAKE 1 1.1 运行NMAKE 1 1.1.1 NMAKE的实质 2 1.2 描述块 3 1.2.1 定义 3 1.2.2 多个描述块 3 1.2.3 依赖 4 1.2.4 长文件名 4 1.2.5 多目标 4 1.2.6 合并 5 1.3 宏 5 1.3.1 定义、使用 5 1.3.2 作…

WINDOWS CMAKE与NMAKE

什么是cmake 你或许听过好几种 Make 工具&#xff0c;例如 GNU Make &#xff0c;QT 的 qmake &#xff0c;微软的 MSnmake&#xff0c;BSD Make&#xff08;pmake&#xff09;&#xff0c;Makepp&#xff0c;等等。这些 Make 工具遵循着不同的规范和标准&#xff0c;所执行的…

vs 编译nmake工程

以本人电脑为例&#xff1a; 1、将D:\program files\visual studio 2013\VC\bin这个路径添加到系统环境变量的path中 2、打开cmd的控制台命令行界面 输入nmake与cl来测试是否报错 3、编译make文件&#xff1a; cd到源文件所在目录&#xff0c;使用命令nmake /F *.nmake编译m…

nmake 环境变量配置

本农有3年多C/C开发经验,最近面试全部翻车,总结原因是基础知识不过关,于是最近在看C primer 5,配套的源代码编译没通过,原因是nmake需要配置环境变量,总结错误如下 1.找不到nmake命令 解决方法:找到nmake所在路径,我用的是vs2010,C:\Program Files (x86)\Microsoft Visual Stud…

nmake命令(windows下的makefile)

1. 如果已经有vc6的dsp工程&#xff0c;可直接导出nmake脚本文件(.mak) “Project - Export Makefile...” nmake -f nMakeTest.mak CFG"nMakeTest - Win32 Debug" nmake -f nMakeTest.mak CFG"nMakeTest - Win32 Debug" all nmake -f nMakeTest.mak CFG&q…

nmake简介

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 nmake学习初步 前言一、nmake在哪里&#xff1f;二、Makefile编写1.hello.c实例代码2. Makefile3 扩展 前言 一直使用vs的IDE&#xff0c;最近编译sqlcipher时&#xff0c;发…

第八章 查询和检索:Query DSL

版权声明 本文为Elastic开源社区版权所有,保证独立性和原创性,未获得授权和允许,任何组织和个人不得以任何方式传播或复制或分享。否则必将追究法律责任。 知识内容输出不易,请尊重他人劳动成果。严禁随意传播、复制和盗用他人成果或文章内容用以商业或盈利目的! 1、查询…

mysql-dql(Data QueryLanguage)summary

1.基础查询 DESC 库名//查看库SHOW DATABASES ;//查看当前所在数据库SHOW TABLES;//查看当前库的所有表USE database;//datebase为需要查询的库名SELECT attribute,attribute2 FROM form;//从form中查询attribute,attribute2SELECT * FROM beauty;//查询表中所有属性SELECT DI…

db.query的使用

首先假设有如下表格&#xff0c;表格名称为&#xff1a;"Employees" SQL基本格式如下&#xff1a; [sql] view plain copy print ? select 列名称 from 表名称 最基本SQL语句&#xff0c;就是从表中选取要返回的列数据&#xff0c;不加任何过滤条件。当然如果&qu…

Elasticsearch——Query DSL语法入门

Query DSL入门 官网介绍链接&#xff1a; https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html search api就是对存储在elastic search&#xff08;以下简称es&#xff09;中的数据进行查询的相关API&#xff0c;可以类比mysql中的select语句。…

Data Query Language(DQL):数据查询语言

Data Query Language&#xff08;DQL&#xff09;&#xff1a;数据查询语言 基础查询查询所有列查询指定列 条件查询条件查询介绍查询示例如下 模糊查询模糊查询介绍查询示例如下 字段控制查询排序聚合函数分组查询分页查询 建立三张表用于查询&#xff0c;表中数据如下。 stu表…

SpringDataJPA+QueryDSL玩转态动条件/投影查询

在本文之前&#xff0c;本应当专门有一篇博客讲解SpringDataJPA使用自带的SpecificationJpaSpecificationExecutor去说明如何玩条件查询&#xff0c;但是看到新奇、编码更简单易懂的技术总是会让人感到惊喜&#xff0c;而且QueryDSL对SpringDataJPA有着完美的支持。如果你没有使…

ES的Query DSL语句介绍

1、term 过滤 term主要用于精确匹配哪些值&#xff0c;比如数字&#xff0c;日期&#xff0c;布尔值或 not_analyzed 的字符串(未经切词的文本数据类型)&#xff1a; { "term": { "date": "2017-07-01" }} { "term": { "tit…

QueryDSL配置

QueryDSL配置 1&#xff1a;maven配置- <dependency><groupId>com.querydsl</groupId><artifactId>querydsl-jpa</artifactId><version>5.0.0</version></dependency><dependency><groupId>com.querydsl</gro…

Elasticsearch:DSL Query

Query DSL的分类 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括&#xff1a; 查询所有&#xff1a;查询出所有的数据&#xff0c;一般测试用&#xff0c;例如&#xff1a;match_all&#xff0c;但有分页限制&#xff0c;一次20…

SpringBoot+Querydsl 框架,大大简化复杂查询操作

概述 本篇博客主要将介绍的是利用spring query dsl框架实现的服务端查询解析和实现介绍。 查询功能是在各种应用程序里面都有应用&#xff0c;且非常重要的功能。用户直接使用的查询功能往往是在我们做好的UI界面上进行查询&#xff0c;UI会将查询请求发给查询实现的服务器&a…