我的项目通过几个静态库构建,这些静态库应该链接到主 dll 库,因此获得了一个 dll。
使用__declspec(dllexport)
属性不会导致静态库的指定功能出现在 dll 中,库根本没有与 dll 链接。
然后我尝试将每个库构建为共享库,以获取导出函数的正确名称并基于它们创建 .def 文件。使用 .def 文件会导致结果。
在我的情况下应该
__declspec(dllexport)
并.def-file
采取同样的行动吗?是否可以从源代码生成 .def 文件?由于我有 C++ 代码,由于 API 中的修饰和存在类,我无法自己编写 .def 文件,因此上述临时生成的 dll 的方法与生产不一致。
更新
我想详细解释一下我的项目的结构。该解决方案由几个项目(模块)组成。
+
|
+-+ static_lib1
| +
| +--+ src
|
+-+ static_lib2
| +
| +--+ src
|
+-+ dynamic_lib (linked with static_lib1 and static_lib2)
+
+--+ src
每个子项目都弱依赖于其他子项目,让我们假设它们没有连接以清晰。每个模块都有自己的公共接口。我希望将所有模块都作为单个动态库,所以我的工件是dynamic_lib.dll
,但实际上静态库没有与之链接。