首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

VC 與 MATLAB 聯合程式設計 (七) — MATLAB Compiler 生成 DLL 完整流程

     編輯:關於VC++

MATLAB Compiler 簡介

MATLAB Compiler 可將 .m 檔轉換為 C、C++、P 碼等原始碼,並依需求產生可執行檔、靜態庫、動態連結庫 (DLL) 或 S-function。MATLAB 6.5 內建的編譯器包含 C/C++ 數學庫與圖形庫。DLL 是軟體開發常用技術,本文示範在 MATLAB 6.5 中將 .m 檔編譯為 DLL 並在 VC 中呼叫。

1. 編譯器設定

因編譯器使用 C/C++ 庫,需先執行:

mex -setup
mbuild -setup

依提示選擇 VC 編譯器,若已設定可略過。

2. 設定 VC 專案的標頭檔與庫路徑

參考《聯合程式設計 (六)》,依 MATLAB 實際安裝路徑設定:

標頭檔路徑設定

圖 1

庫檔路徑設定

圖 2

3. 撰寫簡單 .m 函數 huatu_test.m

function y = huatu_test()
x = -10:0.1:10;
y = sin(x);
plot(x, y, '*')

4. 使用 mcc 生成 DLL 及相關檔案

> mcc -t -W libhg:dlltest -T link:lib -h libmmfile.mlib huatu_test.m

於當前目錄 (預設 MATLAB\work) 產生檔案,需取 dlltest.h、dlltest.lib、dlltest.dll。

5. 建立 VC 對話方塊專案 ceshi

加入「測試」按鈕,複製上述三檔到專案目錄並加入專案。

6. 撰寫呼叫程式碼

在 ceshiDlg.cpp 加入 #include "dlltest.h",打開該檔可見函數宣告:

extern mxArray * mlfHuatu_test(void);
extern void dlltestInitialize(void);
extern void dlltestTerminate(void);

按鈕回應:

void CCeshiDlg::OnButton1()
{
    dlltestInitialize();
    mlfHuatu_test();
    dlltestTerminate();
}

執行結果

繪圖結果

圖 3

常用 mcc 參數速查

  • mcc -B sgl myfun — 產生 C 程式碼與使用 C 圖形庫的可執行檔
  • mcc -B sglcpp myfun — 產生 C++ 程式碼與使用 C++ 圖形庫的可執行檔
  • mcc -t -W main -L C -T link:exe -h libmmfile.mlib myfun — 產生可執行 C 程式 (等同 mcc -m myfun)

詳細參數請查閱 MATLAB 說明文件。

執行說明

  1. 依實際情況修改 VC 標頭檔/庫路徑。
  2. 若圖形無法顯示選單/工具列,請將 bin 資料夾複製到專案目錄。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved