0

有谁知道我在哪里可以找到 Firebreath 示例(Mac OS X 或 Windows),该示例说明了如何创建包含 1 个或多个其他库(.DLL 或 .SO)的插件,每个库都依赖于其他静态构建的子项目图书馆(LIB)?

例如,假设 Firebreath 插件名为 PluginA,而 PluginA 调用来自 DLL_B 和 DLL_C 的方法。DLL_B 和 DLL_C 是 C++ 项目。DLL_B 从另一个名为 LIB_D 的项目中调用方法,而 DLL_C 从名为 DLL_E 的项目中调用方法。

因此,最终的包应该包含以下文件:

PluginA.dll
DLL_B.dll (which also incorporates LIB_D)
DLL_C.dll
DLL_E.dll

我目前被迫转储 pluginA 解决方案中的所有源文件,但这只是一个瓶颈(例如,我无法调用用其他语言编写的库,例如 Mac OS X 上的 Objective-C)。

我尝试跟踪 Firebreath 上的示例,但无法让它们工作,并且我没有发现其他用户声称他们能够使其工作的示例。我尝试使用 CMAKE,并直接从 X-Code 运行解决方案,但最终结果是相同的(收到链接错误,部署后 DLL_C 找不到 DLL_E 等)

任何帮助将不胜感激 - 谢谢,

米尼亚

4

1 回答 1

1

你想太多了。

在窗户上:

  • DLL依赖于静态库,因为如果它们这样做了,它就会在构建时被编译。
  • 依赖于另一个 DLL 的 DLL 通常只需要其他 DLL 出现在同一位置或 DLL 搜索路径中。
  • 考虑到这两件事,您需要做的就是找到作为静态库或与 .dll 一起使用的 .lib 文件,并target_link_library为每个文件添加一个调用。firebreath.org 上有一个页面解释了如何执行此操作

在 linux 上大致相同,但使用查找 .so 文件的正常规则。

于 2013-04-10T18:05:23.890 回答