新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > Matlab與C/C++混合編程接口及應用

        Matlab與C/C++混合編程接口及應用

        作者: 時間:2012-08-27 來源:網絡 收藏

        3.3 利用mcc 編譯器生成的的DLL 文件

        的C++ Complier不僅能夠將的m文件轉換為C/C++的源代碼,還能產生完全 脫離運行環境的獨立可執行DLL程序。從而可以在C/C++程序中,通過調用DLL實現對 Matlab代碼的調用。下面通過一個簡單的例子說明C/C++調用m文件生成的DLL:

        a.建立m文件example4.m: function result=example4(para)

        x=[1 para 3]; y=[1 3 1]; plot(x,y); result=para*2; end.然后在命令窗口中輸入:

        mcc -t -W libhg:example4 -T link:lib -h libmmfile.mlib libmwsglm.mlib example4則在工作目錄下會生成example4 .dll、example4 .lib和example4 .h三個文件。

        b.在VC中新建一個基于對話框的應用程序Test3,然后添加一個按鈕及按鈕響應函數,函數內容見d步,再將生成的3個文件拷貝到Test2工程目錄下。

        c.VC編譯環境的設置如同3.2節c、d步;

        d.在按鈕函數文件添加如下的頭文件:#include example4 .h ,函數響應代碼為:

        mxArray* para=mxCreateDoubleScalar(2); mxArray* result; example4Initialize();

        result=mlfExample4(para); CString str;

        str.Format(%f,mxGetScalar(result)); AfxMessageBox(str);

        e.編譯,連接,執行,結果如圖3所示。

        利用mcc 編譯器生成的DLL 動態連接庫文件,只需在C/C++編譯環境中將其包含進來, 調用導出函數即可實現原m 文件的功能,極大地方便了用戶的代碼設計。

        4 結束語

        本文從Matlab 調用C/C++代碼和C/C+調用m 文件兩方面,詳細地研究了Matlab 與C/C++ 技術。對于Matlab 調用C/C++代碼,給出了常用的MEX 技術和調用C/C++動態連接 庫的方法,并對它們進行比較。針對用戶在實際中經常遇到的C/C++調用Matlab 問題,通過研究給出了常用的三種方法及其特點:利用Matlab 計算引擎的方法,后的可執 行程序脫離不了Matlab 的運行環境,運行速度很慢;利用mcc 編譯器將m 文件轉化為C/C++ 文件的方法,雖然能獨立于Matlab 運行環境,可在C/C++環境中包含生成的文件非常繁瑣; 但是m 文件生成的DLL 為用戶提供了一種簡潔方便的C/C++調用Matlab 代碼的方法。除 Matlab 自帶的mcc 外,Matcom 也能將M 文件編譯為C/C++文件和DLL 文件[2][8],但 原理一樣,在此省略。


        上一頁 1 2 3 4 下一頁

        關鍵詞: Matlab 混合編程 接口

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 甘洛县| 乌鲁木齐县| 舒城县| 东光县| 多伦县| 浦北县| 龙口市| 区。| 孟村| 宣化县| 广宗县| 泰兴市| 临邑县| 连云港市| 木兰县| 宣化县| 吉木萨尔县| 乐亭县| 娱乐| 隆安县| 青州市| 新疆| 海盐县| 汉沽区| 南漳县| 南投市| 疏附县| 乐平市| 临夏县| 瓦房店市| 莫力| 奉化市| 湖口县| 梁河县| 元氏县| 盖州市| 宁德市| 濮阳县| 井冈山市| 台州市| 金坛市|