Matlab -- Matlab生成dll、庫文件和頭文件方法(win10+VS2015+Matlab2019b)


MATLAB具有很高的計算性能,在該平台上很多算法易於實現,而有時需要使用C++調用Matlab編寫的程序,可以將該函數編譯成dll庫文件,之后在C++中對其進行調用。

本文詳細講解在Matlab中將函數編譯成庫文件,並在C++中進行調用的方法。

Matlab編譯

首先,matlab中寫好函數

第一步:在matlab的命令行窗口中輸入mex -setup,會出現以下界面。

 第二步:點擊界面的“mex -setup C++”,會出現如下提示。

 以上兩步說明Matlab的編譯環境可行,並且是使用VS2015進行編譯。不同版本的matlab使用的編譯器可能不同,請確保matlab配置的編譯器與之后使用的C++環境保持一致。

第三步:對matlab的函數進行編譯。注意:這里只能對matlab的function進行編譯,並不能對一般的.m腳本進行編譯。我們采用mcc的方式進行編譯,命令如下:

mcc -W cpplib:testmat -T link:lib testmat.m -C

解釋:
-W是控制編譯之后的封裝格式;
cpplib是指編譯成C++的lib,如果需要編譯成C的lib,就用lib即可,去掉cpp;
cpplib后面的是需要生成文件的文件名,是自己取的,我們取名為testmat;
-T表示目標,link:lib表示要連接到一個庫文件的目標,目標的名字即是.m函數的名字。
其他具體含義可以通過mcc –help命令查看,注意參數的大小寫。

第五步:等待matlab進行編譯,這個過程可能需要幾分鍾。編譯完成后的命令行顯示如下信息:

 需要用到的文件只有四個:testmat.ctf,testmat.dll,testmat.lib,testmat.h。

 

PS:使用上述方法時,我第一次成功了,后邊同樣的操作一直失敗,報錯如下圖:

查了很久也沒有找到原因,在Matlab Answers里看到一個問答,

 有個回答如下:

大概意思就是把主編譯文件.m放在matlab主程序文件夾內(我試了不行..),或者使用deploytool,這個工具可以生成特定文件夾內.m文件dll等庫的功能。

 

於是乎,使用deploytool生成頭文件以及庫文件等,成功,deploytool方法如下:

第一步:在命令行窗口輸入mbuild -setup(注意-之前加空格,否則報錯)

 第二步:點擊mex -setup C++ -client MBUILD后,繼續輸入deploytool

 等待彈出窗口,如下圖,選擇Library Compiler

彈出窗口,一定要選擇C++ Shared Library,選其他的生成的不對,然后點擊右側加號,選擇.m文件,

窗口下邊會出現即將生成的文件

 點擊右上角生成按鈕,選擇生成文件放置文件夾,等待打包完成。

 

 最后生成是文件在對應文件夾中,.ctf文件在v2文件夾里,自己找找,到這里matlab生成庫文件就完成了

 


免責聲明!

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



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