matlab調用dll的小小啟發


首先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~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM