【问题标题】:unable to compile examples in ODEINT package无法编译 ODEINT 包中的示例
【发布时间】:2012-10-15 12:38:56
【问题描述】:

我正在尝试解决 C++ 中的一组耦合 ODE,我决定尝试 odeint (available here),因为我已经阅读了很多关于它的好东西。但是,我正在编译包中包含的示例。情况如下:

到目前为止,我只下载了包并解压了它。我在 Windows XP 上运行 Visual C++ 6,并且正在编译示例“simple1d”。我收到错误消息:“无法打开包含文件:'boost/config.hpp':没有这样的文件或目录”。

我不清楚我错过了什么。我需要完整的 boost 库来完成这项工作吗?我的印象是 ODEINT 是一个“独立”包。

【问题讨论】:

  • 抱歉,odeint 不是独立的。这取决于提升。

标签: c++ boost ode


【解决方案1】:

您的错误表明编译器找不到 boost 库。您应该从 boost.org 下载它们并将它们添加到您的标题路径中。

【讨论】:

  • 现在我正在链接到 ODEINT 和 BOOST,然后我收到 10 个错误和 3192 个警告 (?!)。其中一个错误是(例如):“c:\boost_1_51_0\boost\utility\swap.hpp(37) : error C2265: '' : 对零大小数组的引用是非法的”
  • 你能再试一个例子吗? Simple1d 有点特别。虽然直到现在我都没有遇到任何问题。
  • 是的,我刚试过“solar_system.cpp”。现在我收到 4 个错误(没有警告),其中一个是:“error C2039: 'abort' : is not a member of 'std'”
  • 嗯,也许 Visual Studio 6 太旧了,也许不是。我们从未听说过有人遇到 MSVC 问题。也许您尝试更新版本的 MSVC?它们带有一个免费的 Express 变体。
  • 我会试试——我会告诉你结果如何。
【解决方案2】:

你是从哪里下载并解压包的?包主页说它是一个只有头文件的包,所以你只需要让Visual找到头文件。我有一段时间没有使用 Visual,但是快速搜索一下“Visual 6 添加标题路径”之类的内容应该是一个不错的起点。看看Where does Visual Studio look for C++ header files?

引用this page:

在 Visual Studio 中,转到 项目设置 对话框。我们要更改调试和发布版本的设置,因此在 Settings For 字段下,选择“所有配置”。在 C/C++ 选项卡下,选择 Preprocessor 选项。

包 tarball 有一个名为 boost 的目录:您想将该目录的路径添加到 其他包含目录 框中,然后在代码中添加 #include <boost/numeric/odeint/config.hpp>

更新

看来,您已经正确安装了 odeint 头文件:文件 boost/numeric/odeint/config.hpp 有一行 #include <boost/config.hpp>,这就是 visual 必须抱怨的;所以我猜这个包不是独立的。它必须需要安装其他 boost 头文件。我在包主页或包 tarball 中都找不到任何提及任何依赖项的内容,所以我想你也应该尝试安装 boost。下载version 1.51.0 herethis is the windows documentation

【讨论】:

  • 我尝试了您的建议,但没有帮助。我仍然收到相同的错误消息。
【解决方案3】:

您必须从 http://headmyshoulder.github.io/odeint-v2/downloads.html 下载 odeint,从 http://www.boost.org/users/history/version_1_51_0.html 下载 Boost c++ 库。 如果您使用代码块,请右键单击您的项目,选择构建选项,选择搜索目录并添加两个引用,一个用于 odeint,一个用于 boost。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    相关资源
    最近更新 更多