VS2017和Qt5.12中调用外部库的一些心得

2024-02-10 02:30

本文主要是介绍VS2017和Qt5.12中调用外部库的一些心得,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

调用别人写的外部库,大体上分两个步骤:

1.引入相应的头文件xxx.h到你的工程

2.引入相应的xxx.lib到你的工程

 

其真正的核心就在于编译器,编译器是个大傻瓜,你不告诉它你的xxx.h文件和xxx.lib文件在哪里,它就不知道去哪里找,所以我们的核心就是告诉编译器去哪里找我们xxx.h文件和xxx.lib文件。

当然你可以选择直接在你的IDE下使用如下语句将xxx.h文件包含到你的工程下,

#include "外部头文件的绝对路径/xxx.h"

使用如下语句将xxx.lib也弄到你的工程中:

#pragma comment(lib,"外部库文件的绝对路径/xxx.lib")

但是这样对于像我这样有点小小的强迫症的人来说实在是不开心,我们希望去掉那个外部头文件的绝对路径,直接使用如下语句:

#include "xxx.h"
#pragma comment(lib,"xxx.lib")

就能将头文件和lib文件弄进来。

所以我们需要告诉我们的编译器,xxx.h和xxx.lib的绝对路径在哪里,以便让它能够找到它们。

 

虽然就是这两步,但在不同的IDE下却有些地方需要真正弄明白,才不至于在以后的编程中使自己困惑。下面结合图片进行记录说明。

首先外部库一般都有如下结构:

include目录和lib目录

一、VS2017下

这一步告诉你的编译器你的xxx.h文件在哪个路径下。

 

这一步告诉你的编译器你的xxx.lib在哪个目录下。

 

最后就是把xxx.lib弄进来了,你可以有两种选择:

第一种:使用如下指令

#pragma comment(lib,"xxx.lib")

第二种:直接在IDE上弄,如下图

 

二、Qt5.12下

这一步告诉你的编译器你的xxx.h文件在哪个路径下。

这一步告诉你的编译器你的xxx.lib在哪个目录下。

 

最后就是把xxx.lib弄进来了,你可以有两种选择:

第一种:使用如下指令

#pragma comment(lib,"xxx.lib")

第二种:我在qt上还没有发现,O(∩_∩)O哈哈~

 

 

总结:

所以推荐使用第一种用指令的方式引入,这样,既能弄清楚原理,又能训练自己的能力。

不管是什么IDE,归根结底还是开始的两步;

1.引入相应的头文件xxx.h到你的工程

2.引入相应的xxx.lib到你的工程

(就是为了让编译器找到它们的具体位置,你才得去配置它们,编译器真是个大傻瓜,你说未来的电脑会不会像我们人类一样自动去搜寻它不知道的东西呢.......O(∩_∩)O哈哈~)

 

 

 

 

以上是我在配置OpenGL中遇到的小“惊喜”,此外我还遇到了一个问题,就是在qt下使用glfw3.lib的问题,如下图:

glfw的lib下目录结构:

使用glfw3.lib会报一大堆问题.......(这个问题在VS2017下不会出现)

 

 

当我使用glfw3dll.lib就不会有问题了

真是诡异....... 

这篇关于VS2017和Qt5.12中调用外部库的一些心得的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/695915

相关文章

C#如何调用C++库

《C#如何调用C++库》:本文主要介绍C#如何调用C++库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录方法一:使用P/Invoke1. 导出C++函数2. 定义P/Invoke签名3. 调用C++函数方法二:使用C++/CLI作为桥接1. 创建C++/CL

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

Vue 调用摄像头扫描条码功能实现代码

《Vue调用摄像头扫描条码功能实现代码》本文介绍了如何使用Vue.js和jsQR库来实现调用摄像头并扫描条码的功能,通过安装依赖、获取摄像头视频流、解析条码等步骤,实现了从开始扫描到停止扫描的完整流... 目录实现步骤:代码实现1. 安装依赖2. vue 页面代码功能说明注意事项以下是一个基于 Vue.js

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

Java中将异步调用转为同步的五种实现方法

《Java中将异步调用转为同步的五种实现方法》本文介绍了将异步调用转为同步阻塞模式的五种方法:wait/notify、ReentrantLock+Condition、Future、CountDownL... 目录异步与同步的核心区别方法一:使用wait/notify + synchronized代码示例关键

spring-boot-starter-thymeleaf加载外部html文件方式

《spring-boot-starter-thymeleaf加载外部html文件方式》本文介绍了在SpringMVC中使用Thymeleaf模板引擎加载外部HTML文件的方法,以及在SpringBoo... 目录1.Thymeleaf介绍2.springboot使用thymeleaf2.1.引入spring

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O