visual studio 生成dll文件以及修改输出dll文件名称操作

简介: visual studio 生成dll文件以及修改输出dll文件名称操作


visual studio 生成dll文件以及修改dll文件名称

Windows系统下Visual Studio可以通过.def文件创建dll。

一、准备测试代码

1.确定需要导出的函数,test.cpp文件中定义如下

void fun1()
{
  return;
}
void fun2()
{
  return;
}
int main()
{
  return 0;
}

2. 添加.def文件,一般添加到源文件下面。*

在代码栏下面有一个“模块定义文件”,即我们的.def文件

3.编写test.def文件

LIBRARY "test"
EXPORTS
 fun1
 fun2

文件添加完成,下一步即可设置一些导出规则。

二、设置导出dll属性

4.在我们的项目上点击右键,选择“属性”。修改一下配置

平台是64位还是32位要和我们的代码版本保持一致。代码版本查看如下:

属性页设置“目标文件名”,目标文件名需要和我们.def中的LIBRARY “test”,保持一致。同时修改下面的“目标文件拓展名”为.dll

如果目标文件名不一致可能会报以下问题。导致输出的文件dll文件名不是自己设置的。

三、生成dll文件

5.设置完之后,点击项目右键,生成或者重新生成,即可生成我们的dll文件。

.lib .dll .pdb 的简单介绍

.lib .dll文件都是程序可直接引用的文件,前者就是所谓的库文件,后者是动态链接库(Dynamic Link Library)也是一个库文件。而.pdb则可以理解为符号表文件(debug调试用)。

dll文件使用方式

我们的dll文件可以直接使用,调用windows的api LoadLibrary来加载dll,根据头文件调用GetProcAddress 加载dll中的函数,最后使用FreeLibrary释放。

lib文件使用方式

对于程序引用.lib文件一般有两种方式:

1、动态链接 (原理)

这种方式的基本原理是lib文件中包扩了某一段程序(函数)的入口或者说是地址,而他真正的机器码是在dll文件中,

IDE链接的时候将.lib文件(程序地址)链接到源代码中,程序运行时到相应位置(环境变量path,当前目录等)寻找dll文件并执行其中的机器码。

所以这种引用方式一般需要的文件一般有三个:.h,.lib,.dll,生成的源程序也会比较小,因为他只保存了函数地址,但是这种方式总是会出现找不到xxx.dll这种问题。

如果这时候我们还有dll的源代码,并且希望IED可以调试源码,那么就需要.pdb文件了,pdb文件中保存了dll的符号表,所谓符号表可以理解为机器码(这里是dll中的)中插入的key与源代码文件的映射,这样只要指定源码存放的路径,IDE就会自动去找源码。

需要注意的是,pdb文件和dll文件是配套的,也就是说一旦dll文件有改动(比如说重新生成)pdb文件就必须做相应改变。

pdb文件也比较大,程序运行时也会因为要完成映射而比较慢,这也是release版与debug的区别。

2、静态链接:

这种方式只需要lib文件,当然头文件也是需要的。这种方式时候lib文件中有两个部分,可以将文件后缀改为rar解压可以看到。第一部分就是和第一种方式中的key,第二部分是.obj文件存储在obj文件夹下,他相当与dll中的机器码,只不过这个机器码是在链接的时候放入程序的,而不是在程序运行时拿进来的。如果这时候我们也有源代码,并且希望IED可以调试源码,这很容易因为如果lib文件生成的时候模式是NDEBUG(好像不是也可以),obj文件夹下是有一个xx.pdb这个pdb文件中的东西会被IED放入程序的pdb中,所以直接指定源代码位置使用就可以了。

目录
相关文章
Visual Studio C# CS0006 C# 未能找到元数据文件
Visual Studio C# CS0006 C# 未能找到元数据文件
162 0
Visual Studio C# CS0006 C# 未能找到元数据文件
|
1月前
Visual Studio 快速分析 .NET Dump 文件
【11月更文挑战第10天】.NET Dump 文件是在 .NET 应用程序崩溃或出现问题时生成的,记录了应用程序的状态,包括内存对象、线程栈和模块信息。通过分析这些文件,开发人员可以定位和解决内存泄漏、死锁等问题。在 Visual Studio 中,可以通过调试工具、内存分析工具和符号加载等功能来详细分析 Dump 文件。此外,还可以使用第三方工具如 WinDbg 进行更深入的分析。
|
2月前
|
编译器 C++
使用Visual Studio 2022 创建lib和dll并使用
本文介绍了如何在Visual Studio 2022中创建静态库(lib)和动态库(dll),并展示了如何使用这些库。文章详细说明了创建新项目、编写代码、生成库文件、配置项目属性以及编写测试代码的步骤,并提供了相应的截图和代码示例。作者还分享了在创建和使用库的过程中遇到的一些问题及其解决方案。
489 0
使用Visual Studio 2022 创建lib和dll并使用
|
IDE 开发工具 C#
Visual Studio使用Git忽略不想上传到远程仓库的文件
Visual Studio使用Git忽略不想上传到远程仓库的文件
|
7月前
|
IDE 开发工具
一文解决Visual Studio 2022运行时系统找不到指定文件的错误(简单易懂 亲测有用)
一文解决Visual Studio 2022运行时系统找不到指定文件的错误(简单易懂 亲测有用)
3183 0
|
算法 C++
解决方案-Visual Studio生成库(DLL&LIB)以及如何调用
解决方案-Visual Studio生成库(DLL&LIB)以及如何调用
678 0
|
存储 C++
VisualStudio打包项目文件为.exe安装包
注意事项:打包项目前,确保项目能正常运行,不然打包毫无意义。
199 0
|
编译器 C语言
visual studio生成的exe文件如何在其他电脑上运行
简介:C语言的编译器在运行代码的时候会生成一个exe文件,visual studio将这个exe文件拷贝过去并不能运行,为此本文将介绍一下如何将生成的exe文件在其他电脑上运行。
1411 0
visual studio生成的exe文件如何在其他电脑上运行
|
XML 存储 JSON
猿创征文|Python基础——Visual Studio版本——第五章 文件I/O
猿创征文|Python基础——Visual Studio版本——第五章 文件I/O
141 0
猿创征文|Python基础——Visual Studio版本——第五章 文件I/O
|
缓存 网络协议 Java
*(已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
*(已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
*(已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法