2017-01-02 28 views
2

我有文件mx_minimum_power.cpp在以下目录中,我想包括在以下目录cpp文件如何添加相对于当前文件的头文件路径?

D:\thesis library.Data\ALOS-PALSAR 12x2\San Francisco L 12x2 

和14头文件:

D:\thesis library.Data\ALOS-PALSAR 12x2\San Francisco L 12x2\Eigen\Eigenvalues 

所以这些.h的相对路径关于我的.cpp文件的文件是\Eigen\Eigenvalues
如何包含所有这些头文件的相对路径。
我迄今所做的:

#include <math.h> 
#include <complex> 
#include <iostream> 
#include "mex.h" 
#include "matrix.h" 
#include "\Eigen\Eigenvalues" 

using std::complex; 
using std::cout; 
using std::endl; 
using namespace Eigen; 

/* The gateway function */ 
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 
{ 
    double *arraysizePtr = NULL; 
    arraysizePtr = mxGetPr(prhs[9]); 
    const int arraysize = (int)*arraysizePtr; 
    const int matrixDimention = 3; 
} 

,但是当我在Matlab为了建立.mexw64文件运行以下命令:

mex -g mx_minimum_power.cpp 

我得到的错误:

Building with 'Microsoft Visual C++ 2013 Professional'. 
Error using mex 
mx_minimum_power.cpp 
D:\thesis library.Data\ALOS-PALSAR 12x2\San Francisco L 12x2\mx_minimum_power.cpp(6) : fatal 
error C1083: Cannot open include file: '\Eigen\Eigenvalues': No such file or directory 
+1

您应该手动包含所有头文件,例如#include“Eigen \ Eigenvalues \ header.h”'或考虑这个问题的技巧 - http://stackoverflow.com/questions/3061582/include-all-files-in-a-directory –

+0

我可能在少数,但我认为'#include'指令中的路径是一个坏主意。如果我有时间,我会尝试从试图在遗留代码中解决这些问题的人中找到一些问题。 – Beta

+1

'#include“\ Eigen \ Eigenvalues''表示在名为'Eigen'的文件夹中查找文件'Eigenvalues',该文件夹位于代码所在驱动器的根目录下。在这种情况下,它正在查找文件'D :\征\ Eigenvalues' – drescherjm

回答

1
#include "Eigen/Eigenvalues/first.of.14.h" 
... 

然后让编译器知道查看“。”作为包含的基本路径,假设您从源目录运行编译器。在gcc/g ++中,使用“-I”。我无法在MSDN上找到相应的内容,但有一个。我几年前就用过它。

从字面上回答你的问题,但我会告诉编译器查看“Eigen \ Eigenvalues”,然后只使用上面的14个名称,而不使用两级目录。

相关问题