【C++】解决在 Windows 上工程发布为 exe 时,dll 动态库相关问题

本文介绍了如何在Windows环境下,使用Dependencies工具查询C++程序所需的DLL文件,并通过Everything软件查找本地DLL,解决发布时的依赖问题。同时,讲解了如何处理缺失DLL的下载及打包程序的步骤,确保程序在其他电脑上能正常运行。
摘要由CSDN通过智能技术生成

1 查询 exe 需要的所有 dll 文件

使用 dependencies 工具

其概述为:

Dependencies is a rewrite of the legacy software Dependency Walker which was shipped along Windows SDKs, but whose development stopped around 2006. Dependencies can help Windows developers troubleshooting their dll load dependencies issues.


Dependency Walker 在 2006 年已经停止维护,而 dependencies 是由前者发展而来的,帮助 Windows 开发人员排除 dll 依赖相关的问题。

1.1 下载

GitHub 中下载。

1.1 使用

  • 解压后,运行 DependenciesGui.exe
  • 选择 File --> Open,选择需要查询的 exe 文件

效果如下图

在这里插入图片描述

2 寻找本地中相应的 dll 文件

使用 Everything 软件(可以快速查找本地文件)

2.1 安装

官网 中选择相应版本安装。

2.2 使用

  • 双击打开后,直接在输入框中输入要找的 dll 文件名即可

效果如下图

在这里插入图片描述

3 下载本地中缺失的 dll 文件

一般系统的 dll 文件都可以在本地找到,如果实在找不到,可以在一些 dll 文件下载网站上搜索一下。

例如:DLL‑FILES.COM

4 打包将要发布的程序

  • exe 文件与 dll 文件放在同一目录下
  • 压缩文件夹,发给其他电脑进行运行测试
  • 在其他电脑中双击 exe 后如果仍有 dll 缺失相关的错误

缺什么就往文件夹里补什么(按 23 中说的找一下)

  • 当所有需要的 dll 文件都放在目录里时,程序自然就可以在其他电脑上运行啦
C与C++混编动态库,使用CMake进行编译和构建非常方便。CMake是一个开源的跨平台构建工具,可以根据不同平台的需求生成对应的makefile或者Visual Studio等项目文件。下面是使用CMake编译和构建C与C++混编动态库的简要步骤: 1. 创建一个工程文件夹,例如"mylibrary",并在该文件夹下创建源码文件: - C源码文件:例如"library.c" ```c int add(int a, int b) { return a + b; } ``` - C++源码文件:例如"library.cpp" ```cpp #include <iostream> extern "C" { int multiply(int a, int b) { return a * b; } } int main() { std::cout << "Hello, C++!" << std::endl; return 0; } ``` 2. 在源码文件夹下创建一个CMakeLists.txt文件,并指定库类型、源码文件和输出路径: ```cmake cmake_minimum_required(VERSION 3.0) project(mylibrary) # 指定混编动态库 set(CMAKE_C_FLAGS "-fPIC") set(CMAKE_CXX_FLAGS "-fPIC") # 添加源码文件 set(SOURCE_FILES library.c library.cpp) # 编译为动态库 add_library(mylibrary SHARED ${SOURCE_FILES}) # 指定输出路径 set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) ``` 3. 在工程文件夹下创建一个build文件夹,用来存放编译生成的中间文件和最终生成的动态库: ``` mkdir build cd build ``` 4. 在终端中进入build文件夹,使用cmake命令生成makefile或者Visual Studio项目文件: ``` cmake .. ``` 5. 使用生成的makefile进行编译和构建: ``` make ``` 6. 编译成功后,会在lib文件夹下生成对应平台的动态库文件,例如Linux下的libmylibrary.so或者Windows下的mylibrary.dll。可以将该动态库文件与其他C或者C++项目进行链接,以便调用其中的函数。 通过这样的方法,我们可以很方便地将C与C++源码混编生成动态库,并且使用CMake可以提供跨平台的构建能力,极大地简化了编译和构建的工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

G.Chenhui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值