如何从 dll 中导出没有名称的函数

Posted

技术标签:

【中文标题】如何从 dll 中导出没有名称的函数【英文标题】:How to export functions that have no name from a dll 【发布时间】:2018-11-09 16:30:56 【问题描述】:

我有一个 .dll 我想静态链接到我的 C++ exe。我创建了一个我认为包含准确函数签名的标头,因此我需要从我的 dll 构建一个 lib 文件。我使用 dumpbin 来获取 dll 中函数的名称,但大多数函数是无名的并且只有序数。那我应该在我的 .def 文件中放什么?

我设法找到了一些从 dll 创建 lib 文件的批处理脚本,但它们只是省略了那些无名函数。

我认为许多人会非常感谢有关 lib、def、obj 文件和链接的深入教程.

我正在使用 Visual C++ Express 2010。

【问题讨论】:

与您的问题无关,但为什么您使用的编译器已经有将近十年的历史了?为什么不获取最新版本以便使用现代 C++? @JesperJuhl Bah,没什么!我正在使用即将推出 20 年的 Borland C++Builder 6.0 工作。感谢上帝提供用于工作场所安全的遗留系统。 ;) 你说得对,它不相关。我不想冒险就此展开评论讨论。 @Someprogrammerdude 我不想要你的工作。幸运的是,我的工作场所使工具保持最新状态,因此我们从 4 月就开始使用 C++17。而且我不会回去。 这会有所帮助:docs.microsoft.com/en-us/cpp/build/… 和 docs.microsoft.com/en-us/cpp/build/…。您可以将@X 添加到函数条目,其中 X 是函数的序数值(您可以从 dumpbin 中看到) 【参考方案1】:

如果函数仅按序号导出(即每个导出都用 NONAME 修饰),那么名称无关紧要,您可以指定任何您喜欢的名称。当然,您最好知道每个序号应该是什么。

【讨论】:

以上是关于如何从 dll 中导出没有名称的函数的主要内容,如果未能解决你的问题,请参考以下文章

如何显示 DLL 可导出的函数

如何从 DLL 中导出数组?

为啥有的dll里没有导出函数?

是否可以从将引用作为参数的 rust dll 导出函数

在 DLL 中导出的 C++ 函数中使用 #ifdef 块

(编辑)如何在Windows中导出模板专业化,并在cpp文件中声明源