そこで、Linux用のBoost.Extensionサンプルを移植しようとしています。
サンプルはここで説明されています。これが私のコードポートです(動物のクラス、動物のプロトタイプ、メインアプリ、一般的なすべてのポートのアイデアはここで説明され、現在のLinuxの進歩はここにあります(いくつかのサンプルは実際に必要に応じて機能します!))。このサンプルをLinuxでコンパイルすると、コンパイルすると、動物を含むライブラリが見つかりますが、次のように出力されます。
Animals not found!
これはのみ発生しif(factories.empty())
ます。
拡張機能のサンプルをクロスプラットフォームベースに移植しようとしているので、Windowsで同じコードを試しましたが、魅力のように機能します。すべての動物と出力を検索します。
Creating an animal using factory:
Cougar factory Created an animal:
cougar Age: 2 Creating an animal using
factory: Leopard factory Created an
animal: leopard Age: 3 Creating an
animal using factory: Puma factory
Created an animal: puma Age: 4
Creating an animal using factory:
Wildcat factory Created an animal:
wildcat Age: 5
だから...なぜそれは同じコードでLinux上でそのように動作するのですか?なぜそれがWindowsでうまく機能するのですか?
アップデート:
それで、premakeでこのようなものを構築する方法:
- ここからsvnを取得します(このフォルダーのみが必要です)
- プラットフォームのプリメイクを取得するか、ソースからビルドして、svnからダウンロードしたフォルダーに配置します
- 公式のBoostをコンパイルしてインストールする必要があります(ディレクトリにあるReadMe.txtファイルをお読みください)。必要なものは次のとおりです。
- Boost C ++ライブラリ (バージョン1.4.16でテスト済み)
- Boost-Extension(最新のリビジョンを使用します。boost'boost / extension /
**
'の一部としてアドレス指定します。拡張機能をブーストするためにいくつかのチャンド(実際には1つのみ)を作成する必要がBoost.Extension.Tutorial/libs/boost/extension/
あったため、フォルダー内に提供し、svnをダウンロードしたときに取得しました。 、ヘッダーのみです) - Boost-Reflection(このチュートリアルのために使用し、最新のリビジョンを使用し、boost'boost /reflection /
**
'の一部としてアドレス指定します。*簡単にするために、 *に入れることをお勧めしBoost.Extension.Tutorial/libs/boost/reflection
ます)
- これで、公式のBoostがシステムにあり、ヘッダーのみのBoost-reflectionとBoost-extensionが
Boost.Extension.Tutorial/libs/boost
フォルダーにあり、premake4実行可能ファイルがBoost.Extension.Tutorial/
フォルダー内にある場合、Windowsを呼び出しBoost.Extension.Tutorial/ premake4-build-windows.bat
てVisualStudioのslnを取得したりBoost.Extension.Tutorial/ premake-build.sh
makefileを取得したりできます。 - 生成されたソリューション/メイクファイルは、生成されたプロジェクトフォルダー内にあります。
- 頑張ってください!=)
アップデート2:
WindowsとLinuxのプロジェクトファイルがsvnに含まれるようになったため、premakeを使用してプロジェクトを作成できます。Boost、svn、およびリフレクションヘッダーのみをlibに設定してください。