因爲項目的需要,需要C++和matlab混合編程。一種方式是利用mexfunction實現,網上有很多的講解,大家可以去查閱;還有一種方式是matlab直接調用帶參數的exe文件,個人感覺用起來更方便一點,實現也比較簡單。下面做一些簡單講解,希望能對大家有用。
1、如何生成帶參數的exe文件?
我的理解是帶參數的exe文件是通過帶參數的主函數實現的。即:
int main(int argc, char* argv[])
在這個main函數中,表面上看是有兩個參數,但是實際使用中給main函數
傳遞的參數是保存在argv中的,argc是總的參數的個數,比實際傳入的參數多1
個。原因在於argv中第1個值,也就是argv[0]存的是程序的全名,調用時不需要
單獨給出,而只需要給出在main函數中需要的其他參數。下面舉例簡單說明,利用
帶參數的exe求兩個數的和:
int main(int argc, char* argv[])
{
Sum=argv[1]+argv[2];
cout<<Sum;
}
注意: 1、main函數的格式是固定的;
2、傳入的參數是存在agrv[1]及其之後的,而不是agrv[0]開始的。
2、matlab怎麼調用帶參數的exe文件?
帶參數的exe,在matlab中調用的格式爲:
!exe文件名.exe 參數1 參數2 參數3....
假設exe文件的名字爲Add,功能是求兩個數的和,那就需要兩個參數(實際是3個參數,argc=3),調用格式爲:
!Add.exe 2 3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%