簡化m檔案轉化為c c 檔案,VC編譯

2021-03-31 08:56:31 字數 2381 閱讀 1990

發信人: fork (撒哈拉沙漠的沙), 信區: matlab

標  題: 簡化m檔案轉化為c/c++檔案,vc編譯

發信站: bbs 哈工大紫丁香站 (sat jul 31 22:29:48 2004)

在本版《總結:m檔案轉化為c/c++語言檔案,vc編譯》一文中講到如何將乙個m檔案轉成c

/cpp檔案並在vc中進行編譯。這種方法有個煩人的地方,每次你都需要把matlab生成的一

大堆c和h檔案考到vc中,比如我讀入一副先做膨脹,再腐蝕,再進行小波變換,最後

顯示。這樣乙個程式會生成大概150多個檔案,每次都要拷貝這些檔案很不方便。我試著用

了另外一種方法,可以簡化這些工作。那就是不生成cpp檔案交給vc去編譯,而是直接在m

atlab中生成乙個dll交給vc去鏈結即可。這樣無論matlab生成多少檔案,都只需要拷貝三

個檔案即可。

1.     建乙個m檔案,內容為:(我特意在這個程式中演示影象顯示,引數傳遞與返回)

%%%%%%%%%%%%%%%%%%%%%% 

function result=fork_2(para) 

x=[1 para 3]; 

y=[1 3 1]; 

plot(x,y); 

result=para*2;

%%%%%%%%%%%%%%%%%%%%%% 

儲存後在命令視窗中: 

輸入:(格式:mcc -t -w libhg:《自己起個名字》 -t link:lib -h libmmfile.mlib

libmwsglm.mlib 檔名) 

mcc -t -w libhg:fork2 -t link:lib -h libmmfile.mlib  libmwsglm.mlib fork_2

然後你會在你的工作目錄下找到fork2.dll,fork2.lib,fork2.h三個檔案。 

2.  在vc中建乙個基於對話方塊的mfc應用程式,名字為testfork2,新增乙個 

按鈕,並新增按鈕響應函式,函式內容在第五步中說明。將上面生成的 

3個檔案拷貝到vc工程的testfork2目錄裡。 

3.  在vc中選擇:工程--->設定,再選屬性表link選項,下拉列表中選擇input, 

在物件/庫模組中加入附錄a中所列出的內容,注意用空格將它們格開而在忽略 

庫中加入附錄b中列出的內容;再選擇屬性表c/c++選項,下拉列表選general, 

在預處理程式定義中新增附錄c中的內容,原來有的內容要保留,並注意用逗號 

將它們隔開。再選擇下拉列表的pre***piled headers選項,選擇「自動使用預 

補償頁首」,在其中新增stdafx.h ,確定。 

4.  選擇:工具--->選擇,屬性頁選擇「目錄」,在include files裡面加入: 

c:/matlab6p5/extern/include 

c:/matlab6p5/extern/include/cpp 

注意,根據你的matlab的安裝位置的不同,要相應的修改上面的位址。 

在library files裡面加入: 

c:/matlab6p5/extern/lib/win32 

c:/matlab6p5/extern/lib/win32/microsoft/msvc60 

注意,根據你的matlab的安裝位置的不同,要相應的修改上面的位址。 

5.  在按鈕響應函式所在檔案中新增如下的標頭檔案: 

...... 

#include "fork2.h"

...... 

函式響應**為: 

mxarray* para=mxcreatedoublescalar(2);

mxarray* result;

fork2initialize();

result=mlffork_2(para);

cstring str;

str.format("%f",mxgetscalar(result));

afxmessagebox(str);

6.  在第三步中提到的link---->input選項中加入一項:fork2.lib

7.  編譯,連線,執行,一切ok!

libmmfile.lib libmatlb.lib libmx.lib libmat.lib libmatpm.lib  

sgl.lib libmwsglm.lib libmwservices.lib libut.lib

附錄b:忽略庫 

msvcrt.lib 

附錄c: 預處理程式定義 

msvc,ibmpc,mswind 

《總結:m檔案轉化為c/c++語言檔案,vc編譯》可以在本版找到。

總結 m檔案轉化為c c 語言檔案,VC編譯

fork 撒哈拉沙漠的沙 於 thu dec 4 00 56 56 2003 說道 發信人 fork 撒哈拉沙漠的沙 信區 matlab 標 題 總結 m檔案轉化為c c 語言檔案,vc編譯 發信站 bbs 哈工大紫丁香站 sat oct 30 17 44 20 2004 這是以前發的文章,但被版主...

將MATLAB的 m指令碼轉化為 exe檔案

在matlab的command視窗執行操作 mbuild setup would you like mbuild to locate installed compilers y n?選擇n 按提示後選擇編譯器 在command視窗編譯待轉換的.m檔案 example.m 執行操作 mcc m exa...

動態檔案轉化為靜態檔案

using system.data.sqltypes using system.data.sqlclient using system.io string title demo stringbuilder sb new stringbuilder 注意這裡使用到了變數 連線資料庫 using sql...