環境: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來...