c++ - 从没有外部“C”的dll中导出C++函数
问题描述
目标:应用程序应该能够使用 LoadLibrary 动态加载 dll 并使用 GetProcAddress 调用其导出的函数。
我的 dll 类有一个返回类类型的 unique_ptr 的函数。
我想导出此函数,以便应用程序可以在 dll 成功加载后使用 getProcAddress 调用此函数。
使用 extern "C" 将不允许在函数签名中使用 C++ 类(在本例中为 unique_ptr 类模板)。
我知道,如果不使用 extern "C",它会导出带有损坏名称的函数(通过 __declspec(dllexport) )。
在调用 getProcAddress 的过程中,客户端不会知道损坏的名称,那么客户端将如何调用此函数呢?
有没有办法导出这样的功能?
解决方案
是的,老式的方法。按名称查找函数是“现代”方式(尽管它早于 Windows 95)。旧方法是按 ordinal查找它们。
您需要提供一个模块定义文件来EXPORTS
为您的函数编号。
推荐阅读
- python - pycuda:gpu 中用于列表的内存分配
- kotlin - 如何读取和增加外部类实例的 Int 变量?
- javascript - 用正则表达式替换时结果错误
- swift - 字符串到日期的转换有时会引发 NSOperationQueue 错误
- python - 检测使用 cv2.HoughCircles 检测到的圆圈颜色的最佳方法是什么?
- c++ - 使用正则表达式进行电子邮件输入验证 C++
- repository - Tortoisehg 在 Push to Bitbucket 上不一致地要求输入密码
- excel-formula - 计算同一天账户交易次数的公式
- swift - 将 Swift 系统库添加到 xcode 项目?
- java - 如何构建包含所有依赖项的 Java 项目作为 Jars