从不带 extern "C" 的 dll 导出 C++ 函数

Ish*_*ita 5 c++ dllexport

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

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

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

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

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

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

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

MSa*_*ers 3

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

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