Matlab 是當前應用最為廣泛的數學軟體,具有強大的數值計算、資料分析處理、系統 分析、圖形顯示甚至符號運算等功能[1]。利用這一完整的數學平臺,使用者可以快速實現十分 複雜的功能,極大地提高工程分析計算的效率[2][3]。但與其他高階程式[3]相比,Matlab 程式 是一種解釋執行程式,不用編譯等預處理,程式執行速度較慢[4]。
C/C++語言是目前最為流行的高階程式設計語言之一[5]。它可對作業系統和應用程式以 及硬體進行直接操作,用C/C++語言明顯優於其它解釋型高階語言,一些大型應用軟體如 Matlab 就是用C 語言開發的。
在工程實踐中,使用者經常遇到Matlab 與C/C++混合程式設計的問題。本文基於Matlab 6.5和VC6.0 開發環境,在Windows 平臺下就它們之間的混合程式設計問題進行深入研究並舉例說明。
2 Matlab 呼叫C/C++
Matlab 呼叫C/C++的方式主要有兩種:利用MEX 技術和呼叫C/C++動態連線庫。
在Matlab 與C/C++混合程式設計之前,必須先對Matlab 的編譯應用程式mex 和編譯器mbuild進行正確的設定[1]:
對Matlab 編譯應用程式mex 的設定:Mex –setup.
對Matlab 編譯器mbuild 的設定:Mbuild –setup.
2.1 呼叫C/C++的MEX 檔案
MEX 是Matlab Executable 的縮寫,它是一種“可在Matlab 中呼叫的C(或Fortran)語 言衍生程式”[6]。MEX 檔案的使用極為方便,其呼叫方式與Matlab 的內建函式完全相同,只 需在Matlab 命令提示符下鍵入MEX 檔名即可。
一個C/C++的MEX源程式通常包括4個組成部分,其中前3個是必須包含的內容,第4個則根據所實現的功能靈活選用:(1)#include “mex.h”;(2)MEX檔案的入口函式mexFunction, MEX檔案匯出名必須為mexFunction函式;(3)mxArray;(4)API函式
Matlab 是當前應用最為廣泛的數學軟體,具有強大的數值計算、資料分析處理、系統 分析、圖形顯示甚至符號運算等功能[1]。利用這一完整的數學平臺,使用者可以快速實現十分 複雜的功能,極大地提高工程分析計算的效率[2][3]。但與其他高階程式[3]相比,Matlab 程式 是一種解釋執行程式,不用編譯等預處理,程式執行速度較慢[4]。
C/C++語言是目前最為流行的高階程式設計語言之一[5]。它可對作業系統和應用程式以 及硬體進行直接操作,用C/C++語言明顯優於其它解釋型高階語言,一些大型應用軟體如 Matlab 就是用C 語言開發的。
在工程實踐中,使用者經常遇到Matlab 與C/C++混合程式設計的問題。本文基於Matlab 6.5和VC6.0 開發環境,在Windows 平臺下就它們之間的混合程式設計問題進行深入研究並舉例說明。
2 Matlab 呼叫C/C++
Matlab 呼叫C/C++的方式主要有兩種:利用MEX 技術和呼叫C/C++動態連線庫。
在Matlab 與C/C++混合程式設計之前,必須先對Matlab 的編譯應用程式mex 和編譯器mbuild進行正確的設定[1]:
對Matlab 編譯應用程式mex 的設定:Mex –setup.
對Matlab 編譯器mbuild 的設定:Mbuild –setup.
2.1 呼叫C/C++的MEX 檔案
MEX 是Matlab Executable 的縮寫,它是一種“可在Matlab 中呼叫的C(或Fortran)語 言衍生程式”[6]。MEX 檔案的使用極為方便,其呼叫方式與Matlab 的內建函式完全相同,只 需在Matlab 命令提示符下鍵入MEX 檔名即可。
一個C/C++的MEX源程式通常包括4個組成部分,其中前3個是必須包含的內容,第4個則根據所實現的功能靈活選用:(1)#include “mex.h”;(2)MEX檔案的入口函式mexFunction, MEX檔案匯出名必須為mexFunction函式;(3)mxArray;(4)API函式