7

MSVC 7.1 を使用して、Windows で STLport 5.2.1 を使用してブースト 1.48.0 をビルドしています。実行するコマンド ラインは次のとおりです。

b2 toolset=msvc link=shared threading=multi runtime-link=shared variant=debug stdlib=stlport --layout=tagged stage

私の user-config.jam は次のように設定されています。

using msvc : 7.1 ;
using stlport : 5.2.1 : C:/Code/third_party_source/STLport-5.2.1/stlport : C:/Code/third_party_source/STLport-5.2.1/lib ;

STLport に関連するリンカー エラーがいくつか発生します。それらの1つは次のようになります。

path.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall stlpd
_std::basic_string<wchar_t,class stlpd_std::char_traits<wchar_t>,class stlpd_std::allocator<wchar_t>
 >::basic_string<wchar_t,class stlpd_std::char_traits<wchar_t>,class stlpd_std::allocator<wchar_t> >
(class stlpd_std::basic_string<wchar_t,class stlpd_std::char_traits<wchar_t>,class stlpd_std::alloca
tor<wchar_t> > const &)" (__imp_??0?$basic_string@_WV?$char_traits@_W@stlpd_std@@V?$allocator@_W@2@@
stlpd_std@@QAE@ABV01@@Z)

STLport で Boost ビルドを取得できないのはなぜですか?

4

2 に答える 2

4

Boost メーリング リストの何人かの助けを借りて、STLport で Boost を構築することができました。以下は、この問題に遭遇した他の人のために私が書いたいくつかの指示です。

まず、それぞれのコンパイラ用に STLport をコンパイルしたことを確認してください。次に、tools/build/v2 ディレクトリに移動し、ファイル user-config.jam を次のように編集します。

using msvc : 8.0 ;
using stlport : 5.2.1 : C:/Code/third_party_source/STLport-5.2.1/stlport : C:/Code/third_party_source/STLport-5.2.1/lib-vc8 ;

上記で、適切なバージョンの MSVC を使用し、STLport への正しい絶対パスを使用していることを確認してください。この例では MSVC8 を使用していますが、次の表に従って自分のバージョンに変更してください。

Visual Studio .NET 2003        -- 7.1
Visual Studio 2005             -- 8.0
Visual Studio 2008             -- 9.0
Visual Studio 2010             -- 10.0
Visual Studio 11               -- 11.0

同様に、using stlport 行では、適切なバージョンの STLport を指定していることを確認してください。ここではバージョン 5.2.1 を使用しています。次のパラメーターは stlport インクルード ディレクトリへのパス (適宜変更) であり、3 番目で最後のパラメーターは、同じバージョンのMSVC用にコンパイルされた STLport ライブラリへのパスです。

ユーザー構成ファイルがセットアップされると、次のコマンドを呼び出してブーストを構築できます。

デバッグの場合:

b2 toolset=msvc link=shared threading=multi runtime-link=shared variant=debug stdlib=stlport define=_STLP_DEBUG --layout=tagged stage

リリースの場合:

b2 toolset=msvc link=shared threading=multi runtime-link=shared variant=release stdlib=stlport --layout=tagged stage

私が見逃していた重要な変更は、 のdefine=_STLP_DEBUG呼び出し中のオプションでしたb2

于 2012-03-01T17:47:32.453 に答える
3

using stlport行にバージョン指定子がありません。次のように変更します。

using stlport : 5.2.1 : C:/Code/work/rdailey-t510/depot/dev/gfe-dev/server/external/stlport/WINNT5.0_OPT.OBJ/stlport : C:/Code/work/rdailey-t510/depot/dev/gfe-dev/server/external/stlport/WINNT5.0_OPT.OBJ/lib ;

次に、bjam/b2 を呼び出すときに、バージョンを含めて機能を指定します。つまり、

stdlib=stlport-5.2.1

(もちろん、5.2.1 以外の STLPort のバージョンについては、正しいバージョン番号に置き換えてください。)

于 2011-10-03T22:09:49.380 に答える