2011-01-06 13 views
9

私はbjam.exe --build-dir="C:\build-boost" --build-type=minimal msvc stage私は静的または動的ブーストライブラリを持っていますか?

を走ってきたし、今私は図書館を例

libboost_serialization-vc100-mt 
libboost_serialization-vc100-mt-1_45 
libboost_serialization-vc100-mt-gd 
libboost_serialization-vc100-mt-gd-1_45 

のために、私はこれらのデバッグとリリースバージョンの静的ライブラリであるべきと信じて、これらのヘッダと.LIBています。 Multi-threaded Debug (/MTd)でコンパイラを実行すると、エラーが発生するLNK1104: cannot open file 'libboost_serialization-vc100-mt-sgd-1_45.lib'-sgd

どこが間違っていますか?

+1

"--build-type = complete"を使ってビルドを試すこともできます。サポートされているライブラリのすべてのバリエーションをビルドすることができます。http://www.boost.org/docの「5.3.4 bjamを呼び出す」を参照してください。 /libs/1_42_0/more/getting_started/windows.html – yasouser

答えて

4

あなたは動的バージョンがあります。静的なものは、名前に「s」を付けることによって区切られます。 bjamコマンドラインでlink=staticを指定していることを確認してください。そうでない場合は、静的バージョンを作成するために再構築する必要があります。

+0

最後に '.dlls'を私に渡すと思いますか?ステージフォルダに '.libs'しかありません。 – snoz

+0

@snoz:間違ったフォルダを探しています。 Windowsのボックスでは、ライブラリはビルド成果物として扱われ、各ライブラリのコンパイルが完了すると出力フォルダにコピーされます。 dllとlibsの両方を含むディレクトリがどこにあるのかを調べなければなりません。 –

2

が静的​​ライブラリについてBoost getting started windowsセクション6.3ネーミングとsection 6.1 on Unix naming

が例えばそこにSであるべきで見ますあなたがここに動的ライブラリ

+0

私はそれが "egd"であるべきではないと思っています。 "sgd"または "s"でなければなりません。 –

2

を持って-sgdすることは私はあなたのコンパイラは、マルチスレッドのスタティックを探している

libboost_serialization-VC100-MT-SGD-1_45.lib

lib- if boost library starts with lib then its a static library , shared library do not start with lib prefix. Also static library will have a '-s' in the name. 

mt- multi-threaded , obtained by specifying threading=multi when you ran bjam or b2.This is the default threading. 

g- use debug libraries for building the code 
d- build a debug version of your code 

をそれを打破する方法です/ MTdで実行したときのデバッグライブラリ(mt-sgd)(LIBCMTD.libを使用してデバッグマルチスレッド実行可能ファイルを作成します)。私は、デフォルトでは静的ライブラリを探しているに違いないと思う。あなたは、動的ライブラリをしたい場合は、あなたのコードに次の行を挿入したり、種類のMSVCでブーストを構築するための2つの「静的」オプションがあるで混乱されるマクロ

#define BOOST_ALL_DYN_LINK 
20

何かを定義します。

B2.exeには、ITを静的にリンクすることをブーストに指示するオプションlink=staticがあります。/MTまたは/ MTdを使用してVCプロジェクトをコンパイルする場合は、runtime-link=staticオプションを使用して、VCランタイムライブラリに静的にリンクすることをboostに伝える必要があります。

2番目のruntime-link=staticで、-sを.lib名に置きます。ブーストを構築するための

私のコマンドラインは

b2.exe --toolset=msvc variant=release link=static threading=multi runtime-link=static stage 
+0

私はこれに多くの問題を抱えていますが、ブーストだけでなく、さまざまな依存関係があります。私はあなたがちょうどそれを私のためにクリックしたと思う! (3年後)。 –

関連する問題