【问题标题】:My program can not find the boost library我的程序找不到 boost 库
【发布时间】:2010-11-10 14:32:14
【问题描述】:

我尝试编写作为 Boost 测试库示例的代码:

#include <boost/unit_test.hpp>

BOOST_AUTO_TEST_CASE(test)
{
    BOOST_CHECK(true);
}

我构建了源代码,得到了执行文件test.exe。我尝试执行该文件,但收到一条错误消息。

程序无法启动,因为您的计算机中缺少 boost_unit_test_framework-vc80-mt-1_44.dll。尝试重新安装程序以解决此问题。

但是,我已经在我的 boost 库目录中准备好了那个文件。

这种情况有什么问题?

背景: 对于我的构建环境,我使用 Windows 7 Ultimate x64 和 Visual Studio 2005。 于是我自己搭建了boost库,得到了64位计算系统的所有库。

使用 bjam,我在 64 位命令提示符窗口中使用命令:bjam --toolset=mvsc-8.0 address-model=64 threading=multi --build-system=complete install

构建后,我在 Visual Studio 目录路径选项中设置了 boost 库和头目录。

谢谢大家!

【问题讨论】:

  • 您可以将所有 boost DLL 所在的 boost 文件夹添加到您的系统路径(PATH 环境变量)。这与 Visual Studio 路径无关。或者,您可以将 boost DLL 复制到您的应用程序目录。

标签: c++ windows testing boost dll


【解决方案1】:

确保 DLL 的路径包含在“PATH”环境变量中。 (或者,如果您愿意,可以将 DLL 包含在您的 exe 目录中)。这样就可以找到 DLL。

【讨论】:

  • 或者一个便宜又老套的解决方案就是将所需的 DLL 复制到 test.exe 所在的任何位置并从中运行。
【解决方案2】:

您还可以选择使用 Boost 库的静态版本。

构建或下载静态库并将 Visual Studio 指向这些库。 Boost 代码将内置到您的应用程序中(增加其大小),您将不需要 DLL。

【讨论】:

    【解决方案3】:

    如果使用 CMake 配置您的应用程序,您可以使用 Boost_USE_STATIC_LIBS 告诉 CMake 使用 static 版本的 Boost 库:

    set(Boost_USE_STATIC_LIBS ON)
    
    find_package(Boost ... )
    

    这样,将不需要 DLL,因为必要的 Boost 定义将通过静态库内置到您的应用程序中。

    【讨论】:

      猜你喜欢
      • 2019-12-29
      • 2016-08-21
      • 1970-01-01
      • 1970-01-01
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      • 2015-01-21
      相关资源
      最近更新 更多