2011-07-18 8 views
0

質問:DLLが実際に正しくインストールされ、他のアプリケーションがDLLを正常に使用すると、なぜアプリケーションがDLL「boost_thread-vc100-mt-1_46_1.dll」を見つけられないでしょうか?なぜアプリケーションはDLL "boost_thread-vc100-mt-1_46_1.dll"を見つけられないでしょうか?

問題:アプリケーションのインスタンスを起動するときに、次のエラーメッセージが表示されます。 "boost_thread-vc100-mt-1_46_1.dllがコンピュータに存在しないため、プログラムを開始できません。この問題を修正するプログラムを再インストールしてみてください「このメッセージは私を混乱させる理由

いくつかの理由:\プログラムファイル(x86の)\ブースト\ boost_1_46_1 \ libに:

  1. のdll はCで存在があります同様の設定で
  2. 別のプロジェクトが正常に実行され、成功し
  3. 私が後押し::スレッドオブジェクトを自分のアプリケーションから作成したコードを削除すると、エラー メッセージが表示されない ブースト::スレッドオブジェクトを作成しません。

その他の詳細: CLRを有効にしたMS VS 2010を使用してC++/CLIアプリケーションを開発しています。

私はBoost Threadライブラリ(バージョン1.46.1)を使用しています。

ブーストスレッドおよびC++/CLIの使用方法についての記事へのアドバイスの後、私は私のヘッダファイルの1に次のコードを追加しました:

#if defined(_MANAGED) 
#define BOOST_USE_WINDOWS_H 
#endif 

#define BOOST_THREAD_USE_DLL 

#include "boost/thread.hpp" 
namespace boost { 
    struct thread::dummy {}; 
} 

#pragma warning(push) 
#pragma warning(disable:4793) 
#include "boost/thread/mutex.hpp" 
#pragma warning(pop) 

#include "boost/thread/locks.hpp" 

を、私はあなたが持つかもしれないアドバイスを感謝しています。ありがとうございました。

答えて

0

C:\Program Files(x86)\boost\boost_1_46_1\libにいるとあまり役に立ちません。

DLLの検索パスに含まれている必要があります。

他のアプリケーションでは、主に実行可能ファイルの横にDLLのローカルコピーがある可能性があります。

0

ブーストライブラリの場所をリンカー検索パスに追加する必要があります。

リンカエラーを表示しているC++プロジェクトを右クリックし、[プロパティ]を選択します。 「リンカー」 - >「一般」の順に進み、右側のパネルに追加のライブラリディレクトリが表示されます。 boost_thread-vc100-mt-1_46_1.dllを保持するフォルダへのパスを入力します。通常、このフォルダはとなり、ブーストライブラリのとなり、のようになります。

これでリンカはlibsを探すときにそのフォルダを検索し、すべてがうまくいくはずです。

関連する問題