为什么应用程序找不到DLL“boost_thread-vc100-mt-1_46_1.dll”?

时间:2011-07-18 19:36:22

标签: c++-cli boost-thread visual-studio-2010

问题:当DLL实际上已正确安装时,为什么应用程序找不到DLL“boost_thread-vc100-mt-1_46_1.dll”,而其他应用程序成功使用DLL?

问题:启动应用程序实例时,会出现以下错误消息: “程序无法启动,因为您的计算机缺少boost_thread-vc100-mt-1_46_1.dll。请尝试重新安装该程序以解决此问题。“

此消息让我困惑的几个原因:

  1. dll 出现在C:\ Program Files(x86)\ boost \ boost_1_46_1 \ lib
  2. 具有类似设置的另一个项目正常运行并确实创建 成功提升::线程对象
  3. 当我从我的应用程序中删除创建boost :: thread对象的代码时,错误 消息未出现。
  4. 其他细节: 我正在使用启用了CLR的MS VS 2010开发C ++ / CLI应用程序。

    我正在使用Boost Thread库(版本1.46.1)。

    根据有关使用Boost Thread和C ++ / CLI的帖子的建议,我将以下代码添加到我的一个头文件中:

    #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"
    

    我感谢您的任何建议。谢谢。

2 个答案:

答案 0 :(得分:0)

进入C:\Program Files(x86)\boost\boost_1_46_1\lib无济于事。

它需要位于DLL搜索路径中。

使用boost的其他应用程序可能在主可执行文件旁边有DLL的本地副本。

答案 1 :(得分:0)

您需要将boost libs的位置添加到链接器搜索路径。

右键单击显示链接器错误的C ++项目,选择“属性”。转到链接器 - >一般然后在右侧面板中,您会看到其他库目录。放入保存boost_thread-vc100-mt-1_46_1.dll的文件夹的路径 - 通常此文件夹将保存所有的升级库,并且类似于D:\Program Files\boost\boost_1_49_0\stage\lib

现在链接器在查找lib时会搜索该文件夹,一切都应该可以工作。