IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> C++的.dll文件和.lib文件的使用 -> 正文阅读

[大数据]C++的.dll文件和.lib文件的使用

简介

在VS 中,如果正确使用 .lib 文件和.h 文件的时候,编译是不会报错的,但是项目生成后,必须把 .dll 文件拷贝到输出项目的路径下,否则项目是无法运行的。
值得注意的是.dll 和 .lib 文件都有x86和x64之分,如果这两个环境配错了也会导致无法运行。

示例

在这里以sqlite3示例,官网

  • 下载Source Code下的 sqlite-amalgamation ,里面有.c和.h文件
  • 下载Precompiled Binaries for Windows 下的 sqlite-dll-winXX-xXX,里面有.dll和.def文件
    • 注意,最好是64和86的版本都下载

.def生成.lib 文件

如果你打开.def文件后,你就会发现.def文件里面全是函数名,没有其他东西,这意味着,只通过.def生成的.lib文件是无法运行项目的。
上面下载的文件中没有 .lib 文件但是有.def文件,需要我们手动编译.def文件,编译的.bat脚本如下

@echo off
:: 设置工具的路径目录,这里需要改成自己的lib.exe文件的路径,我的路径和其他人的路径相比不知道为啥这么复杂
SET toolpath=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\
:: 设置def文件的目录
SET defpath=%~dp0%~nx1
echo %toolpath%
echo %defpath%
cd /d "%toolpath%"
:: 转换成x86的,这里要转换成哪个平台就用哪行代码
lib.exe /DEF:%defpath% /machine:IX86 /out:%~dp0%~n1.lib
:: 转换成x64的
::lib.exe /DEF:%defpath% /machine:X64 /out:%~dp0%~n1.lib
pause

然后把 .def 文件拖到这个脚本里面就可以生成 .lib 文件了
还是要强调,.lib文件有x86和x64之分,导错平台会导致编译器报错

环境搭建

在VS中正常创建一个C++控制台项目
然后进行以下配置(右键项目-属性)

  • 需要配置以下内容
    • 在此之前,千万要注意平台是x64还是x86
      在这里插入图片描述
  • 【C/C++】-【常规】-【附加包含目录】,这里配置.h文件的扫描路径,可以使用 ./ 来表示项目路径下
  • 【链接器】-【常规】-【附加库目录】,这里配置.lib文件的扫描路径,可以使用 ./ 来表示项目路径下
  • 【链接器】-【输入】-【附加库依赖项】,这里配置需要调用的.lib文件,例如 sqlite3.lib
    我们把下载和生成好的.lib,.h文件放到工程下(自己可以建一个文件夹),然后配置好上面三个后,就可以调用sqlite3.h里面的方法了。

编写好代码后生成项目,然后你会发现项目是不能运行的,因为还缺一步,需要把.dll 文件拷贝到生成的项目路径下(就是生成的.exe文件所在的位置),这样就可以运行了。
再次提醒,.dll和.lib文件都有x64和x86之分,别搞错了

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 11:47:11  更:2022-04-26 11:50:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:11:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码