發信人: 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...