1

CMake で生成された .vcproj で次のエラーが発生します。

Performing Pre-Link Event...
Linking...
LINK : fatal error LNK1104: cannot open file 'libboost_thread-vc90-mt-1_44.lib'

ライブラリが呼び出されているという事実を除けばboost_thread-vc90-mt-1_44.lib、.vcproj でこれへの参照がまったく見つかりません。リンカー/入力セクション、生成されたコマンド ライン、またはテキスト エディターで .vcproj ファイルを検索することもできます。

何が起こっている可能性がありますか? また、問題をよりよく調査するにはどうすればよいですか? そもそもリンカが参照を見つけている場所を教えてもらう方法はありlibboost_thread-vc90-mt-1_44.libますか?

4

2 に答える 2

3

Boost は Visual Studio との自動リンクを使用するため、Boost ライブラリで明示的にリンクする必要はありません。この機能を無効にするように定義できますBOOST_ALL_NO_LIBが、これはお勧めしません。私の経験では非常にうまく機能します。

#pragma comment(lib, "user32.lib")Visual Studio で使用して、ライブラリを自動リンクできます。boost/config/auto_link.hpp を見ると、それが使用されていることがわかります。

あなたの場合、ブースト スレッドの静的バージョンを探しています。ブーストのビルド時にそのバージョンをビルドしなかった可能性があります。オプションで指定することにより--build-type=completeb2ブースト ライブラリの静的バージョンと動的バージョンの両方がビルドされるようにすることができます。その場合、どのバージョンが自動リンクされるかを心配する必要はありません。

于 2013-03-12T19:39:08.730 に答える
0

boost_thread-vc90-mt-1_44.libインポートライブラリですboost_thread-vc90-mt-1_44.dll。ただし、CRT を静的にリンクしているように見えるため、Boost 自動リンク機能は静的な Boost ライブラリもリンクしようとし、.という名前の静的なBoost.Thread ライブラリを探しますlibboost_thread-vc90-mt-1_44.lib

詳細については、この質問を参照してください。

于 2013-03-12T20:00:05.433 に答える