C++如何調用matlab庫函數?
01-07
之前我們項目是用matlab寫的,現在想寫個C++版本,所以應該會調用matlab的一些庫函數,請問有沒有什麼好的解決方法?
用matlab自帶的mcc編譯器編譯成庫。我試了下比如你的matlab函數寫成fuck.m,然後在matlab工作目錄切換到fuck.m所在的目錄,輸入: mcc -W lib:Fuck -T link:lib fuck
然後就會生成一堆Fuck.h,Fuck.c,Fuck.lib,Fuck.dll等。
有幾種方法:1.MATLAB Coder即代碼生成,不過有許多限制:
功能 - MATLAB Coder
2.MATLAB Compiler 和 MATLAB Compiler SDK另一個答案中提到的mcc就是這種,不過目前更推薦使用其GUI工具,即deploytool,會使得整個過程更加直觀這種方法同樣有一定限制:MATLAB Compiler 6.1 Support for MATLAB and Toolboxes3.通過MATLAB的API調用MATLAB:
MATLAB Engine API for C, C++, and Fortran這種方法相當於在程序執行用啟動MATLAB引擎並執行MATLAB程序,顯然這需要執行程序的計算機上安裝有MATLAB,而不只是MCRMATLAB engine, 然後可以直接在c裡面用MATLAB語句,是以一個類似msg的形式和MATLAB engine交流。。要做的就是在編譯的時候連接上庫,沒記錯的話是-leng -lmx。再包含相應頭文件。。
這方面MATLAB官方資料確實比較少,似乎他們並不希望MATLAB這麼被使用。。
不過吧,這種問題應該是上stackoverflow上去問吶,而且有現成的解答。。爪機碼字,沒辦法有例子和鏈接,見諒。推薦閱讀:
※C、C++、MATLAB、Python、Go 哪個比較適合寫演算法?
※linux下子進程退出狀態為什麼永遠是非正常?
※LYP是一位怎樣優秀的巨巨?
※為什麼C++書上的.h文件上不加預編譯語句?
※C++ new分配的內存不delete會泄漏嗎?