6

私は(学校向けに)取り組んでいるプロジェクトを持っており、ソリューションのためにBoostライブラリを掘り下げています。コンパイルを実行するシステムにライブラリをインストールしなくてもコンパイルできるように、必要な Boost ソース コードをアプリケーションと共に配布する何らかの方法が必要です。(学校のコンピュータには、言及できるものがほとんどありません。学校は昨年 CVS をインストールしたばかりですが、VS2005 はあります)

注: Vista で Visual Studio 2005 を使用しています。システムに Boost 1.34.1 があり、自動インストーラーを使用しました。私が遭遇したドキュメントには、BCP コマンドの使用について何か書かれていますが、そのコマンドは何もコピーしていないようです。(絶対パスを使用して BCP を呼び出すので、間違ったコマンドを呼び出すことはありません。)

編集: RegEx ライブラリを使用しようとしています。

編集:BCPに使用しているコマンドは次のとおりです。"c:\Program Files\boost\boost_1_34_1\bin\bcp.exe" boost/regex.hpp regex\

そして、次のように返します。no errors detected

4

6 に答える 6

5

使用しているライブラリによって異なります。ヘッダーのみのライブラリを使用している場合(ほとんどのBoostライブラリは、シグナル、シリアル化、日付/時刻などの注目すべき例外です)、これらのヘッダーファイルをコピーするだけです。それ以外の場合は、cppファイルもコピーする必要があります。私の提案は、それらをプロジェクトに含めることです。

したがって、これがあなたがすることです:あなたはあなたのプロジェクト設定からブーストインクルードパスを削除します(ツール->オプション->プロジェクトとソリューション-> vc ++ディレクトリ->インクルードファイル)。コンパイルしてみてください。どのインクルードが失敗するかを見てください。そのファイルをブーストディレクトリからプロジェクトディレクトリにコピーします。泡立てて、すすぎ、プロジェクトがコンパイルされるまで繰り返します。

.cppファイルを必要とするライブラリを使用している場合は、リンク時にエラーが発生します。使用するライブラリのすべての.cppファイルをプロジェクトディレクトリにコピーし、それらすべてをソリューションに追加します。再構築して指を交差させます。

より詳細な回答については、使用しているライブラリを投稿してください。

于 2008-09-28T13:57:38.343 に答える
2

次のコマンドでbcpを呼び出してみてください。

"c:\Program Files\boost\boost_1_34_1\bin\bcp.exe" --boost="c:\Program Files\boost\boost_1_34_1" regex regex

--boostブーストがインストールされている場所をbcpに通知します。最初regexはモジュールの名前、2番目は宛先ディレクトリです。

ああ、まだ気づいていないのであれば、にVisualC++のmakefileがありlibs\regex\build\ます。

于 2008-09-29T10:24:30.687 に答える
2

正規表現を使用しているというコメントに基づいて、次のことを行います。「通常の」ブースト配布 zip ファイルをダウンロードします。どこかで解凍してください。libs/regex/src に移動します。そのディレクトリ内のすべての .cpp ファイルをプロジェクト ディレクトリにコピー アンド ペーストします。それらを Visual Studio プロジェクトに追加します (右クリックして [追加] -> [既存のアイテム] を選択)。次に、boost/regex に移動し、そこにあるすべて (ヘッダー ファイル) をプロジェクト ディレクトリ (サブディレクトリを含む) にコピーします。独自の .cpp および .h ファイルのすべてのインクルードを #include から "regex.hpp" に変更して、システム全体にインストールされたものではなく、ローカル ディレクトリのヘッダーが含まれるようにします。前回の投稿で述べたように、プロジェクト設定からシステム全体のインクルード パスを必ず削除してください。

次に、コードをコンパイルします。正規表現は他のブースト ライブラリに依存しているため、多くの「インクルード ファイルが見つかりません」というエラーが発生します。プロセス全体を繰り返します。boost/xxx に移動します。ここで、xxx は正規表現が探しているライブラリです。エラー メッセージからライブラリを推測できます。コンパイラが要求するすべてのものを自分のプロジェクト ディレクトリにコピーします。機能する前に、ディレクトリ レイアウトを少し変更する必要がある場合があります。これは実際にはステップバイステップのアプローチであり、すべてのステップは同じです。不足しているファイルを特定し、コピーして、そのインクルードが見つかって修正されているかどうかを確認し、次のステップに進みます。これは退屈な仕事です。

これはすべて bcp で自動化できますが、学校のプロジェクトのような 1 回限りのプロジェクトの場合は気にしません。自己完結型の zip ファイルを提供する必要がある将来のプロジェクトがあると思われる場合のみ。

于 2008-09-29T15:24:36.520 に答える
1

これは私には少し奇妙に思えます。ソースコードを配布する場合、配布先はブーストをインストールできる必要があります。次に、ブーストが既にある場合、重複や混乱はありません。または、ブーストがなく、ビルドされたライブラリが必要な場合は、システムに適したライブラリをビルドします。あなたが配布している人々がブーストのインストールに慣れていない場合は、できるだけ簡単にインストールできるように、インストール パッケージでバイナリを配布することをお勧めします。

于 2008-09-28T14:23:15.067 に答える
0

私は以前にこれに遭遇し、私のプロジェクトにブーストを組み込んでいます。個々のBoostライブラリには、さまざまなmakeシステム(Jam、make、Visual Studio 6 ...)でビルドするためのさまざまなプロジェクトファイルが付属していますが、新しいバージョンのVSではそれほど優れていません。

私は常に新しいプロジェクトファイルを作成し、ブーストをプロジェクトに直接埋め込むことを好みます。非常に簡単です。すべてのソースファイルを追加し、プロジェクトオプションを適切に設定するだけです。ただし、注意点が1つあります。つまり、ライブラリ出力ファイルには、ブーストと同じように名前を付ける必要があります。これは、インクルードファイルがそれに依存しているためです。

これを実行すると、プロジェクト内の他のファイルと同じようにBoostライブラリを配布できます。

于 2008-09-28T14:06:34.763 に答える
0

ブーストをコンパイルするのはそのような PITA です。やる気のある学生だけがそれを行うことができます。インストーラーのバンドルを検討しましたか?

于 2009-08-21T13:37:59.573 に答える