无法使用boost和odeint编译C ++文件

时间:2016-06-23 15:04:26

标签: odeint

我使用brew install boost安装了boost以使用odeint库(odeint webpage说:odeint是一个仅限标头的库,不需要链接预编译代码)。

我在Mac Yosemite 10.10.5上。现在当我cd到/ usr / local / include时,我可以在那里看到boost目录。内部提升(/usr/local/include/boost)我的项目需要所有头文件,以及我特定目的所需的数字/ odeint目录。与此同时,当我转到usr\local\lib时,我可以看到很多libboost_* .dylib.a个文件。

但是,当我尝试编译一个临时保存在〜/ Downloads(第一个标题是#include <boost/array.hpp>)的c ++文件时,我得到了错误fatal error: 'boost/array.hpp' file not found

我对编程缺乏经验,我真的很感谢你的帮助!谢谢!

2 个答案:

答案 0 :(得分:0)

使用以下include语句,并告知我们是否有效。

#include <boost/numeric/odeint.hpp>
#include <boost/numeric/ublas/matrix.hpp>

如果没有,则需要一些额外的信息。你的BOOST版本是什么,/ usr / local / include / boost目录的结构是什么,如何包含来自/ usr / local / include的其他(非boost)头文件(可能编译器包含路径被破坏)。

答案 1 :(得分:-1)

我问过我的教授这件事。他给出了非常详细的解释,我想我应该分享,以便每个人都能从中受益:

  

理论值:   您的编译器需要知道这些文件的位置。您需要找到一种方法来告诉它文件的位置。

根据您的编制方式,将有不同的解决方案。如果要通过命令行进行编译,请使用类似的内容 g ++ -I / usr / local / Cellar / boost -I代表“包含文件”。当你到达那个阶段时,有一个类似的g ++“开关”,称为-L。 还有一系列工具可以告诉编译器如何搜索包含文件。目录/ usr / local / include几乎可以肯定在它的外观列表中。

如果您使用“make”和相关的编译工具,则可以将include目录添加到“Makefile”的一部分。同样,每个设置的细节都不同。

底线 - 您需要了解有关编译器系统的更多信息。查找特定工具和系统的手册和示例。了解这些工具的工作原理以及指定boost库的位置。阅读增强手册并了解它们存储文件的位置以及存储这些文件的不同目录的所有名称。

这不是一项有趣的工作,但值得学习如何将所有部分组合在一起。