gpt4 book ai didi

c++ - 如何自动导出 C++ 源中的名称以在 DLL 中使用

转载 作者:太空宇宙 更新时间:2023-11-04 12:13:37 27 4
gpt4 key购买 nike

我有一个用 C++ 编写的库(我有它的完整源代码)。由于它的 LGPL 许可证,我只能通过动态链接将它与我公司的专有软件一起使用(静态链接工作正常)。所以,我需要将它构建到一个 DLL 中。但是,该库非常大并且不导出任何内容(因此没有 .def 文件并且类和全局函数名称前面没有 __declspec(dllexport) 语句)。所以,当我构建一个 dll 时,它是无用的,因为它没有导出的名称,所以它不会链接。 在我们公司,我们使用的是 MS Visual C++,默认情况下不导出名称(例如,GNU GCC,当通过 Windows 上的 MINGW 运行时)。因此,我目前看到的唯一选择是将 __declspec(dllexport) 放在我正在使用的库中的每个名称前面(有数千个),或者为这些名称编写一个 .def 文件。但即使我这样做了,我也将无法使用下一版本的库,因为我将不得不再次完成这项工作。我一直在寻找一种工具来执行这些导出或生成 .map 文件,但没有人真正执行此特定任务(有一些 DEF 生成器,但它们主要搜索 DUMPBIN/EXPORT 的结果,在我的例子中没有给出任何结果)。我在网上搜索了两天的答案,但没有好的结果。

最好的问候, 安德烈

最佳答案

IANAL 但如果库是 LPGL,它们应该对动态链接开放。

您是否考虑过修改源文件并更新 Makefile 以提供一种生成动态库并获得维护者批准的方法?他们很可能会对此持开放态度, future 的版本也能正常工作。

关于c++ - 如何自动导出 C++ 源中的名称以在 DLL 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8713756/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com