无法编译 ODEINT 包中的示例

Posted

技术标签:

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

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

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

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

【问题讨论】:

抱歉,odeint 不是独立的。这取决于提升。 【参考方案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 here和this 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。

【讨论】:

以上是关于无法编译 ODEINT 包中的示例的主要内容,如果未能解决你的问题,请参考以下文章

Rs deSolve 和 Pythons odeint 的区别

如何在加速示例包中的示例上启用 CUDA?

高级C和C++编译:无法编译书中提到的示例程序。

无法加载从带有标识符的包中的笔尖引用的“”图像

无法找到嵌入在应用程序包中的按需资源 [关闭]

无法加载从带有标识符的包中的笔尖引用的图像