在 Visual Studio 中自动生成 DLL .DEF 文件?

Posted

技术标签:

【中文标题】在 Visual Studio 中自动生成 DLL .DEF 文件?【英文标题】:Automatically generate a DLL .DEF file in Visual Studio? 【发布时间】:2010-02-01 16:26:07 【问题描述】:

有什么方法可以在 Visual Studio 中为 DLL 自动生成 DEF 文件?我以前总是手动创建它们,但一定有更简单的方法。

【问题讨论】:

是的,可以使用最新版本的 CMake。看我的答案以获得澄清:***.com/a/32284832/3001953 【参考方案1】:

我在这里找到了为您生成 .DEF 文件的地方:expdef - def file generator

这很有效,除了函数和符号的方法名称之外,您还可以生成一个选项列表。

【讨论】:

【参考方案2】:

简单地说:编写一个适合您需要的脚本。我在一些地方创建了一个小的 Perl 脚本来创建一个 .def 文件来自一个现有的 DLL,然后将用于从它创建一个导入库 (.lib)。

没有一种即读即用的工具可以为您执行此操作的原因是,所涉及的工具都无法猜测或以某种方式通过心灵感应确定您要导出哪些函数或变量或常量或类以及使用哪些名称。

您可能知道模块定义文件允许您更改内部名称在导出表中的显示方式,允许按序号(而不是名称)或按名称和序号导出。当然,它们也允许多次导出一个函数(例如,由于旧版支持目的而使用旧名称,而由于现在遵循某些约定而使用新名称)。

另见this question。您会注意到答案还涉及自定义脚本。在这种情况下,要求显然只是对任何和所有非静态函数的名称进行解码和导出。

【讨论】:

【参考方案3】:

在这里查看演示项目的答案:

https://***.com/a/64302521/2338477

我已包含 python 脚本以从静态库生成 .def 文件,但不幸的是,这不适用于变量/数据。

【讨论】:

以上是关于在 Visual Studio 中自动生成 DLL .DEF 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 中测试已编译的 DLL(或生成多个可执行文件)?

怎么将visual studio项目打包生成dll文件

在 Visual Studio 2017 中使用 Cmake 构建 ssh.dll

在 Visual Studio 2010 Express 中从 dll 自动生成 C# 包装类?

从属 DLL 未复制到 Visual Studio 中的生成输出文件夹

在 Visual Studio 中复制 DLL 的依赖项