這麼久了,第一次發部落格,為什麼突然要寫這篇文呢,主要是最近在做乙個專案,可能要通過c++來呼叫matlab程式執行。然後就網上找各種方法,搞了很久心態差點崩了,最後總算弄好了。一直以來在csdn上面得到了許多的幫助,為了其他需要的朋友能夠少走彎路,當然也是為了自己以後忘了不用在網上到處找了,就決定寫下這篇文章,僅供參考。我用的是vs2019和matlabr2018b這兩個版本,親試有效,但其他版本就不做保證了。
編譯matlab程式之前需要設定對應的c++編譯器,具體設定方法網上一搜就有,我就不多說了。
我這裡有三個matlab檔案,mycalc.m, add.m, cheng.m,這些.m檔案要是函式形式
function [r1,r2] = mycalc(a,b)
r1 = add(a,b);
r2 = cheng(a,b);
end
function r = add(a,b)
r = a+b;
end
function r = cheng(a,b)
r = a*b;
end
編譯方法:在matlab命令列中輸入以下命令
>> mcc -w cpplib:mycalc -t link:lib mycalc.m
其中mycalc可以簡單理解為檔名吧,第乙個mycalc表示編譯得到的檔名,第二個就是你要編譯的檔名。可以看到,這條命令中只出現mycalc.m乙個檔案,而我總共有三個檔案,不用擔心,會一起編譯打包的(這是我自己的理解,反正就是這樣,具體原因可以自己去查,歡迎查完跟我解釋)。
編譯後將會得到這些檔案,除了.m檔案是原來的之外,其他的都是編譯得到的,我們要用到的是.lib, .dll和.h這三個檔案,將這三個檔案放到對應的c/c++工程目錄裡面
根據matlab的位數,設定對應的專案平台
在c++專案上右鍵——屬性——vc++目錄,這裡我們需要設定包含目錄和庫目錄
包含目錄新增這兩項:d:\matlab\r2018b\extern\include和d:\matlab\r2018b\extern\include\win64
庫目錄中新增這一項:d:\matlab\r2018b\extern\lib\win64\microsoft
需要注意的是,庫目錄和包含目錄中新增的路徑都要根據自己的matlab安裝目錄設定
附加依賴項在屬性——鏈結器——輸入
在附加依賴項裡面新增這兩項內容,mclmcrrt.lib, mycalc.lib
其中mycalc.lib就是自己編譯得到的.lib檔案
以上完成後剩下的就是寫c++**了,下面附上乙個簡單的**示例
如果在**執行**現這個問題
不要慌,在異常設定裡面取消勾選 win32 exception
這次用的是c++,c的還沒有試過,等找時間試試。
以上就是用vs的c++程式設計呼叫matlab程式的全部內容,希望能夠幫助到大家,有什麼問題也歡迎和我交流**
關於C 程式設計中方法的呼叫
c 在vs程式設計中,方法的定義以及呼叫 諾在同一命名空間,同一類下的方法呼叫 如果方法宣告中有static,可以直接使用該類名進行呼叫。由於是在同一類下的方法,所以在呼叫方法時可以不用加類名稱。例如程式 namespace sta public static void xianshi 這是顯示結果...
關於tsp問題的動態規劃求解的matlab實現
筆者另外加一句話哈,如果有筆者表述不清或寫不清楚的地方,歡迎讀者來聯絡和討論,大家一起進步。這篇文章的 是筆者自己用動態規劃的思想用matlab實現的,裡面的用到了矩陣運算和matlab內建函式的使用,相比c寫起來 少了很多,數學好的看起來應該更加簡單易懂。但是是根據一位大牛的文章寫的,這裡附上他文...
c呼叫c c 呼叫c的混合程式設計
c與c 混合程式設計 1.c 調c c 呼叫c函式是最簡單的,直接調即可。在c.h標頭檔案,加巨集定義,告訴用gcc編譯就好。ifdef cplusplus extern c endif2.c呼叫c c呼叫c 函式,相對複雜。c 標頭檔案需要以下這麼做 作為中間的標頭檔案 ifdef cpluspl...