首页 > 解决方案 > 从没有外部“C”的dll中导出C++函数

问题描述

目标:应用程序应该能够使用 LoadLibrary 动态加载 dll 并使用 GetProcAddress 调用其导出的函数。

我的 dll 类有一个返回类类型的 unique_ptr 的函数。

我想导出此函数,以便应用程序可以在 dll 成功加载后使用 getProcAddress 调用此函数。

使用 extern "C" 将不允许在函数签名中使用 C++ 类(在本例中为 unique_ptr 类模板)。

我知道,如果不使用 extern "C",它会导出带有损坏名称的函数(通过 __declspec(dllexport) )。

在调用 getProcAddress 的过程中,客户端不会知道损坏的名称,那么客户端将如何调用此函数呢?

有没有办法导出这样的功能?

标签: c++dllexport

解决方案


是的,老式的方法。按名称查找函数是“现代”方式(尽管它早于 Windows 95)。旧方法是按 ordinal查找它们。

您需要提供一个模块定义文件EXPORTS为您的函数编号。


推荐阅读