2017-01-02 32 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個名稱,而不使用兩級目錄。

相關問題