2012-02-12 17 views
1

私はVS2010を使用したC++のゲームエンジンプロジェクトを開発中です。 OgreProjectにはOgre3Dのレンダリング用のものがいくつか含まれています。次に、AudioLibraryというクラスライブラリプロジェクトがあります。 AudioLibraryはfmodを使用し、適切なヘッダーとライブラリに含まれています。この問題は、OgreProjectのクラスがAudioLibraryのSoundPlayer.hを使用したいときに発生します。次に、OgreProjectは#includeがどこであるかを知らない。 OgreProjectにfmodがどこにあるかを伝えるのは間違いです。なぜなら、これらのヘッダを直接使用しないからです。 OgreProjectでAudioLibraryのヘッダファイルを使用する正しい方法は何ですか?Visual Studio 2010:複数のC++プロジェクトでの作業

答えて

1

正しい方法はありません。あるライブラリが他のライブラリについて知る魔法の方法はありません。そのように設定する必要があります。それらを同じソリューションに入れると、あるプロジェクトを別のプロジェクトにプロジェクト参照として追加できます。

+0

悲しいことに、私の質問の最後の単語は消えてしまったようです。 OgreProjectがFmodを知っていなければ、OgreProjectでAudioLibraryのヘッダファイルを使用する正しい方法は何でしょうか? – user1205407

+0

そして今、私はAudioLibraryとOgreprojectの両方にfmodに "additional headers"を追加しています。OgreprojectはAudiolibraryを参照しています。 Ogreprojectで直接fmodを使用していないときは、両方のプロジェクトでプロジェクトのプロパティを重複させる必要はありません。おそらくそれはもっと近代的な言語に慣れているだけだろう。とにかく、あなたの答えをありがとう。 – user1205407

0

Pimplイディオム(またはパターン)を試してみることもできます。

fmodに関連するすべてをプロジェクトのヘッダーファイルから削除できます。実装ファイルだけがクライアントプロジェクトではなく、fmodヘッダーを必要とします。

便益を説明しているthis answerを参照してください。

0

プロジェクトのすべてのコンポーネントの階層を定義し、他のコンポーネントが定義済みの場所で使用する特定のコンポーネントのすべてのヘッダーファイルを保持する必要があります。他のコンポーネントは常にこの場所を見ることができます。これらの依存関係を明示的に探す場所をコンポーネントに伝えることに間違いはありません

関連する問題