2010-02-17 67 views
1

我有一個在MATLAB中使用DLL Fortran的問題。 我無法在matlab中使用Fortran編譯的dll。我在matlab中使用「loadlibrary」指令,但錯誤與頭文件有關。 什麼是頭文件? 請給我更多的信息,加載一個dll fortran在MATLAB中,並調用它。在MATLAB中使用DLL

回答

4

與其嘗試直接使用dll文件,我建議您使用Matlab的MEX功能重新構建它。是的,一個mex文件是一個dll,你可以在Matlab之外構建dll併成功使用它,對於初學者來說,比如我猜你會使用MEX更容易。更容易的一種方式是,如果您創建了一個mex文件,那麼系統不會要求您提供一個頭文件,正如您所知道的那樣,這是一個對於Fortran程序員來說相當陌生的概念。 MEX將讓您的生活更輕鬆的另一種方式是,您可以直接從Matlab的命令行調用dll公開的函數,而無需loadlibrary。

研究MEX文件的Matlab文檔,特別注意如何以這種方式集成Fortran。

1

您需要提供一個頭文件來定義您將調用的Fortran DLL中的每個命名函數。舉例來說,如果你的DLL包含一個名爲sum功能,總結兩個雙精度變量,如:

function sum(a,b) result(sum) 
    real(kind=2), intent(in) :: a, b 
    real(kind=2) :: sum 
    sum = a + b 
end function 

然後你的頭需要包含類似:

double sum(double*a, double*b); 

但是不要忘了用特定於Fortran編譯器的名稱裝飾它。例如,如果sum是一個名叫foo模塊中,和你gfortran編譯,那麼你就需要這樣的東西:

double __foo_MOD_sum(double*a, double*b); 

有很多的其他情況,但是這是它的要點。