標籤:

C++如何調用matlab庫函數?

之前我們項目是用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 Toolboxes

3.通過MATLAB的API調用MATLAB:

MATLAB Engine API for C, C++, and Fortran

這種方法相當於在程序執行用啟動MATLAB引擎並執行MATLAB程序,顯然這需要執行程序的計算機上安裝有MATLAB,而不只是MCR


MATLAB engine, 然後可以直接在c裡面用MATLAB語句,是以一個類似msg的形式和MATLAB engine交流。。

要做的就是在編譯的時候連接上庫,沒記錯的話是-leng -lmx。再包含相應頭文件。。

這方面MATLAB官方資料確實比較少,似乎他們並不希望MATLAB這麼被使用。。

不過吧,這種問題應該是上stackoverflow上去問吶,而且有現成的解答。。

爪機碼字,沒辦法有例子和鏈接,見諒。


推薦閱讀:

C、C++、MATLAB、Python、Go 哪個比較適合寫演算法?
linux下子進程退出狀態為什麼永遠是非正常?
LYP是一位怎樣優秀的巨巨?
為什麼C++書上的.h文件上不加預編譯語句?
C++ new分配的內存不delete會泄漏嗎?

TAG:MATLAB | C |