我有一個在MATLAB中使用DLL Fortran的問題。 我無法在matlab中使用Fortran編譯的dll。我在matlab中使用「loadlibrary」指令,但錯誤與頭文件有關。 什麼是頭文件? 請給我更多的信息,加載一個dll fortran在MATLAB中,並調用它。在MATLAB中使用DLL
1
A
回答
1
沒有看到您的頭文件和您在MATLAB中使用的命令行,在這裏很難幫助您太多。你可能reference the documentation in MATLAB which request that you pass two arguments to loadlibrary,第二個是帶有功能簽名的頭文件。我猜你沒有提供第二個參數。
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);
有很多的其他情況,但是這是它的要點。
相關問題
- 1. 在Matlab中使用DLL處理DLL
- 2. C-DLL被MATLAB使用?
- 3. 在MATLAB中加載motorhawk DLL
- 4. dll MATLAB,dll DBMS,blob?
- 5. 是否可以訪問在MATLAB中使用RTW生成的DLL?
- 6. 當在C#.NET中使用時,matlab dll會拋出異常
- 7. 如何在C#中使用由MATLAB編譯的C++ DLL
- 8. 在部署的matlab中不能使用.NET方法dll
- 9. 從matlab調用dll函數
- 10. 如何在MATLAB中創建DLL並在.Net應用程序中使用這些DLL
- 11. 在VC++中使用COM DLL dll
- 12. DLL在C++中使用另一個DLL
- 13. MATLAB「C」DLL錯誤
- 14. 在Python中使用.NET dll
- 15. 在swift中使用C++ DLL
- 16. 在java中使用C#dll
- 17. 在Unity中使用DLL,MonoBehaviour
- 18. 在VB.NET中使用VB.NET DLL
- 19. 在FSI中使用COM DLL
- 20. 在dll中使用設置?
- 21. 在dll-interfaces中使用shared_ptr
- 22. 在VB中使用Fortran DLL
- 23. 在Silverlight中使用.Net dll
- 24. 在vb6中使用.net dll
- 25. 在Qt中使用Dll C++
- 26. 在C++中使用DLL時?
- 27. 在EXE中使用DLL
- 28. 在C#中使用C++ dll#
- 29. 在C#中使用vC++ dll#
- 30. 在VB6中使用WCF DLL?