2014-04-06 51 views
0

我有一个非常简单的问题,我想但是找不到解决方案。我已将“mathcalls.h”文件包含到我的一个项目中,因为我需要使用它的pow(double, double)方法。因此,我已经添加了文件路径为...包含在生成/选项文件中的路径

...的制作/选项文件:

-Iusr/include/i386-linux-gnu/bits 

...的包括IDE(Qt Creator的)的文件:

/usr/include/i386-linux-gnu/bits 

对于包括我试图

#include "mathcalls.h" 
#include <mathcalls.h> 

但我建设项目时,我得到的错误:

/home/USER/SolverNEW/multiphaseEulerFoamNEW.C:46: error: mathcalls.h: 
No such file or directory 

当看着这个,看起来编译器只在我的项目目录中搜索,尽管我已经添加了文件的路径? 请注意,在“usr/include/i386-linux-gnu/bits”中,只有root拥有完全访问权限,其他权限只被授权“访问文件”。

我该如何专业解决这个问题?

回答

1

以专业的方式来获得对double pow(double x, double y)访问:

#include <cmath> 

,或者在必要的时候:

#include <math.h> 

再就是与/usr/include围绕下的子目录卑躬屈膝没有问题。

+0

两者都包括工作,但仍然没有找到这些包含的方法'pow(double,double)',我得到错误:'SQMOM/SourceTermIntegralFunctions/IntegralFunctionBeta.H:16:error:call of overload'pow double&,const double&)'是不明确的。候选人是: /usr/include/i386-linux-gnu/bits/mathcalls.h:155:1:note:double pow(double,double)...'。我还包含在make/options中:'-Iusr/include',其中可以找到math.h。 – Streight

+0

令人费解。除非你正在处理有缺陷的系统,否则'pow()'或'std :: pow()'应该解决。 '/ usr/include'下'i386-linux-gnu/bits'中的任何内容都不能直接使用。 –

+0

尝试此代码:'#include #include int main() {double d = std :: pow(3.14,2.78); std :: cout << d <<“\ n”;返回0; }'。它用'std :: pow'和'pow'完全为我编译;后者让我感到惊讶。我正在使用'g ++ -O3 -g -std = C++ 11 -Wall -Wextra -Werror math.cc -o math'编译Ubuntu 13.10 VM。请尝试独立代码,不要有任何'-I'选项。如果可行,请尝试添加'-I'选项,直到出现问题。然后删除'-I'选项。我想知道是否有一个'-I'增加了一个文件来提前匹配''或''。 –

相关问题