如何链接Firebreath插件中的多个库?

时间:2013-04-10 13:08:29

标签: dll cmake static-libraries firebreath

有谁知道我在哪里可以找到Firebreath示例(Mac OS X或Windows),它说明了如何创建包含一个或多个其他库(.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等)。

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

米赫内亚

1 个答案:

答案 0 :(得分:1)

你想要过度思考这个。

在Windows上:

  • DLL 依赖于静态库,因为如果他们这样做,它将在构建时编译。
  • 依赖于另一个DLL的DLL通常只需要将其他DLL存在于同一位置或DLL搜索路径中。
  • 考虑到这两件事情,您需要做的就是找到.lib文件,该文件既可以是静态库,也可以使用.dll,并为每个文件添加target_link_library调用。 There is a page on firebreath.org that explains how to do this

在Linux上,它大致相同,但使用常规规则来查找.so文件。