0

静的として構築された他のサブプロジェクトにそれぞれ依存する 1 つ以上の他のライブラリ (.DLL または .SO) を含むプラグインを作成する方法を示す Firebreath サンプル (Mac OS X または Windows) を見つけることができる場所を知っている人はいますか?ライブラリ (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

あなたはこれを考えすぎています。

Windows の場合:

  • DLLは、ビルド時にコンパイルされているため、静的ライブラリに依存しません。
  • 別の DLL に依存する DLL は、通常、その別の DLL が同じ場所または DLL 検索パスに存在することを必要とします。
  • これら 2 つのことを考慮して、静的ライブラリであるか、.dll に含まれる .lib ファイルを見つけて、target_link_libraryそれぞれの呼び出しを追加するだけです。これを行う方法を説明するページが firebreath.org にあります

Linux でもほぼ同じですが、.so ファイルを見つけるための通常のルールを使用します。

于 2013-04-10T18:05:23.890 に答える