VC環境和Matlab混合程式設計的實現方法

2021-05-22 21:38:30 字數 2376 閱讀 7231

環境:vc6.0    matlab6.5

就我所知,vc環境和matlab混合程式設計的實現方法主要有兩個,乙個是利用matlab的.m檔案轉換為c++檔案,並生成.dll的方法;另乙個是在vc中呼叫matlab的compile引擎,通過matlab編輯環境進行操作。

方法1:在

matlab6.5中將m

檔案轉化成

dll檔案

,然後在

vc中呼叫該

dll檔案 1

、必須保證編譯器的正確配置,因為編譯器使用了

c/c++

庫函式,所以在使用前需要使用

mex -setup

和mbuild -setup

以上兩個命令對編譯器進行配置,若以前進行配置了就不需要這一步了。

具體配置過程省略,反正就是都選vc6.0環境就一切ok!

2、設定標頭檔案和庫檔案的路徑:工具

->選擇,

目錄 在

inlude

選項中新增如下路徑(這隨你自己的matlab安裝路徑有變化)

:d:/matlab/extern/include/cpp

d:/matlab/extern/include

在library

選項中新增如下路徑

:如圖三

d:/matlab/extern/lib/win32/microsoft/msvc60 d:/matlab/extern/lib d:/matlab/bin

路徑還是根據自己的情況做相應修改。

function y=huatu _test() 3

、新增庫檔案:工程

->

設定->link

在general

選項中的

「物件庫/模組

」中將目錄

d:/matlab/extern/lib/win32/microsoft/msvc60

目錄下的所有庫檔名寫上(有些文章說只需要將幾個個別的寫上,我認為還是都新增上,這樣不管遇到什麼庫函式,我都可以對付):

4、在matlab

開啟文字編輯器

(file->new->m-file)

寫乙個簡單的m函式

x=-10:0.1:10;

y=sin(x);

plot(x,y,"*");   %檔案儲存為huatu_test.m

5.在matlab

命令視窗用如下命令生成

dll檔案和呼叫

dll所需要的檔案

mcc -t -w libhg:dlltest -t link:lib -h libmmfile.mlib huatu_test.m

生成的檔案將會儲存在當前目錄下,預設的當前目錄為:

matlab

根目錄/work

,找到dlltest.h

、dlltest.lib

和dlltest.dll

檔案,這三個檔案是我們需要的。

6.在vc中新建乙個名為

ceshi

基於對話方塊的工程,在工程中新增乙個名為"測試

"的button

按鈕。將

dlltest.h

、dlltest.lib

和dlltest.dll

檔案拷貝到當前工程目錄下,並通過

project->add to project->files

選擇拷貝到當前目錄下的三個檔案,將檔案引入工程。 在

ceshidlg.cpp

檔案中新增標頭檔案

dlltest.h,#include "dlltest.h",

開啟dlltest.h

檔案,裡面有有關函式的定義,找到其中三個函式:

extern mxarray* mlfhuatu_test(void);     extern void dlltestinitialize(void); extern void dlltestterminate(void);

從字面意思可以知道,dlltestinitialize(void)用來初始化動態鏈結庫,dlltestterminate(void)用來結束動態鏈結庫的操作,mlfhuatu_test(void)用來執行畫圖功能。

將三個函式拷貝到

button

響應**中,進行修改:

void ceshidlg::onbutton1()

完成以上操作,就可以實現混合程式設計的一種途徑了。

方法2:利用matlab自己的編輯引擎

開始依舊是配置matlab和vc環境,方法和「方法一」中描述一樣。

接著新建vc的mfc工程,在其中新增按鈕,caption屬性為"呼叫matlab引擎」,並在cmatlabengindlg中新增#include "engine.h"

,button

響應**中新增如下**:

Matlab與VC混合程式設計

眾所周知,matlab是一套功能非常強大的商業數學軟體,從訊號處理,語音處理,資料採集,數值運算,影象處理,到電子 金融分析等等,幾乎在各個工業領域,他都已經得到了廣泛應用,同時也取得了巨大的成功。但是,由於matlab是用一種指令碼語言,他的解釋是逐行執行的,程式中所有的變數都是用mxarray來...

Matlab與VC混合程式設計

眾所周知,matlab是一套功能非常強大的商業數學軟體,從訊號處理,語音處理,資料採集,數值運算,影象處理,到電子 金融分析等等,幾乎在各個工業領域,他都已經得到了廣泛應用,同時也取得了巨大的成功。但是,由於matlab是用一種指令碼語言,他的解釋是逐行執行的,程式中所有的變數都是用mxarray來...

Matlab與VC混合程式設計

眾所周知,matlab是一套功能非常強大的商業數學軟體,從訊號處理,語音處理,資料採集,數值運算,影象處理,到電子 金融分析等等,幾乎在各個工業領域,他都已經得到了廣泛應用,同時也取得了巨大的成功。但是,由於matlab是用一種指令碼語言,他的解釋是逐行執行的,程式中所有的變數都是用mxarray來...