95

これを機能させることができないようです。websocket++ライブラリが必要な単純なコンソール アプリケーション (ライブラリに依存) をBoost作成しましたが、コンパイルしようとすると次のようになります。

致命的なエラー LNK1104: ファイル 'libboost_system-vc110-mt-gd-1_51.lib' を開けません

ただし、ライブラリを作成するbjamを実行(boost_root)/stage/libsし、ライブラリへのパスをコンパイラにリンクしましたC++/Additionnals includes

(boost_root)/stage/libs私がファイル を見ると、libboost_system-vc110-mt-gd-1_51.libそこにはありません。代わりに呼び出されlibboost_system-vc110-mt-sgd-1_51.libます。

何か案が?

4

12 に答える 12

97

C++ → 一般 → 追加のインクルード ディレクトリパラメーターは、コンパイラがヘッダー ファイルを検索するディレクトリを一覧表示するためのものです。

リンク先のライブラリを探す場所をリンカーに伝える必要があります。この設定にアクセスするには、ソリューション エクスプローラーウィンドウでプロジェクト名を右クリックし、[プロパティ] → [リンカー] → [全般] → [追加のライブラリ ディレクトリ] を選択します。ここに入力します (これは、デフォルト オプションを使用してBoost をビルド<boost_path>\stage\libする場合にライブラリが配置されるパスです)。

于 2012-10-24T03:42:03.013 に答える
7

さらに別の解決策:

Link->Additional Dependencies プロパティに boost_regex-vc120-mt-gd-1_58.lib を含めていたので困惑しましたが、リンクは libboost_regex-vc120-mt-gd-1_58.lib ( lib プレフィックスに注意してください)。libboost_regex-vc120-mt-gd-1_58.lib を指定していません。

ブースト ダイナミック ライブラリ (.dll) を使用しようとしました (そしてビルドしました) が、BOOST_ALL_DYN_LINK マクロが定義されていませんでした。どうやらコンパイルにはライブラリを含めるためのヒントがあり、BOOST_ALL_DYN_LINK がないと、動的ライブラリ (lib プレフィックスなし) ではなく、静的ライブラリ (lib プレフィックス付き) が検索されます。

于 2016-02-24T16:38:34.427 に答える
6

私も同じ問題を抱えていました。BoostをVisual C++ 2010(v100)でコンパイルし、ライブラリをVisual Studio 2012(v110)で誤って使おうとしたことが原因でした。

そこで、(Visual Studio 2012 で) 構成をProject properties -> General -> Plataform Toolsetに変更し、値をVisual Studio 2012 (v110)からVisual Studio 2010 (v100)に変更しました。

于 2013-02-26T21:54:56.413 に答える
2

Boostの構築に問題がある場合、またはそれを望まない場合は、SourceForgeからlibファイルをダウンロードすることもできます。リンクをクリックすると、バージョン1.51のzipファイルとdllファイルのフォルダーに移動します。ただし、リンクを編集して、選択したバージョンを指定できるはずです。どうやらBoostProからのインストーラーにはいくつかの問題があります。

于 2013-01-11T02:34:57.480 に答える
2

b2 -j%cores% ツールセット=%msvcver% アドレスモデル=64 アーキテクチャ=x86 リンク=静的スレッド化=マルチ ランタイムリンク=共有 --ビルドタイプ=最小ステージ --stagedir=stage/x64

プロパティ → リンカー → 一般 → 追加のライブラリ ディレクトリ $(BOOST)\stage\ x64 \lib

于 2019-06-25T18:37:18.180 に答える