首先matlab是支持同C的混合編程滴~
我重點研究的是如何將C用在matlab中~
調用dll技術是也~
主要有兩種方法~
一種,是MEX~
C函數可大體不變~
只需一點小小的修改~
也就是MEX固定滴一些語法~
倘若是想實現矩陣的轉置吧,設為change.c~
一個輸入,一個輸出~
又是假設:a = magic(4)~
mex指令:mex change.c~
會生成change.mexw32~
mexw32就相當於dll,只是matlab版本問題罷了~
直接b = change(a),就可得到想要結果~
對了,為何要用MEX?~
當然,主要是為了提速,當遇到特別大的循環時~
另一種,matlab自帶函數,調用動態鏈接庫dll~
先用用VC或者eclipse生成dll~
都試了,也都可行~
主要講一下我用的eclipse吧~
新建project——>Shared Library——>Empty Project——>MinGW GCC——>finish~
添加.c和.h文件,主要有一點要注意,就是.h中必須要有這么一句~
__declspec(dllexport) double add(double x, double y);~
只是為了假設.c中有add函數~
然后編譯,就會生成dll~
假設就是add.dll,和add.h一起移到matlab相應工作目錄~
只需這樣使用:~
loadlibrary add.dll~
libfunctions('add'),這個是為了確定add是不是加載進去了~
然后調用:calllib('add','add',5,4)
結果就是9了~
前一個add是dll,后一個add是函數~
小結一下~
以上主要就是MATLAB如何調用動態鏈接庫dll~