亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vc++中使用matlab的c++數學庫和mcc生成的程序.txt

?? VC++中使用MATLAB的C++數學庫和MCC生成的程序
?? TXT
?? 第 1 頁 / 共 3 頁
字號:
發信人: energy (長白山), 信區: MathTools
標  題: VC++中使用MATLAB的C++數學庫和MCC生成的程序
發信站: BBS 水木清華站 (Fri Jul 16 01:30:11 1999)

http://obase.163.net/matlab/vcmcc.htm

VC++中使用MATLAB的C++數學庫和MCC生成的程序

0、簡介

      MATLAB5.3的提供了C/C++數學庫,其中的C++數學庫功能很強,使用它可以用類似
MATLAB的語法編寫C++程序,十分方便。雖然速度上仍然比手工C/C++程序慢,但是由此
換來的高效的開發效率和可靠性往往是值得的。另外mcc命令可以將M文件轉化為C或CPP
文件,編譯后可以脫離MATLAB運行,它們也是使用的C/C++數學庫。

      不過,MATLAB的數學庫在開發時似乎傾向于編譯獨立的可執行程序,把VC、BC只是作
為一個編譯和連接的工具,而沒有過多地考慮在VC、BC的集成環境下進行開發。這給我們
帶來了不便。

      很多網友問起如何將MCC生成的C++程序嵌入到VC。最近對這個問題做了一下嘗試,在
這里做一個總結,請大家回去試試。這里只介紹VC的情況,用BC的網友就自己研究研究吧,
估計是類似的。

    1、設置項目編譯選項

     首先建立一個新的項目,或者打開一個已有的項目,然后選擇菜單:

     Project->Settings->C/C++

     Category:Preprocessor
     Preprocessor definitions:
     添加: MSVC,IBMPC,MSWIND

    Category: Precompiled Headers

  選擇: Automatic use of precompiled headers
       Through header: stdafx.h


    2、調設置項目連接選項

     首先要從下面幾個函數定義文件(*.def)生成相應的導入庫文件(*.lib)

        libmmfile.def
        libmcc.def
        libmatlb.def
        libmx.def
        libmat.def

    它們位于目錄c:\matlab\extern\include
    用下面命令導出庫文件:

      lib /def:libmmfile.def /out:libmmfile.lib /machine:ix86
      lib /def:libmcc.def /out:libmcc.lib /machine:ix86
      lib /def:libmatlb.def /out:libmatlb.lib /machine:ix86
      lib /def:libmx.def /out:libmx.lib /machine:ix86
      lib /def:libmat.def /out:libmat.lib /machine:ix86

    將它們放入你的項目連接選項

     Project->Settings->Link
    Category:Input

    Object/library modules:
    添加:libmatpm.lib libmmfile.lib libmcc.lib libmatlb.lib libmx.lib libmat.lib

注1: 中間是空格,不要加逗號
注2: libmatpm.lib是C++ MathLib的庫,如果是只用C,就不用連接它了。

     Ignore libraries:
     添加: msvcrt.lib
     注: 僅在Debug版本中需要。原因不明:P)

    以上的這些lib文件,我已經做好了,打了個包放在這里下載:matlablibs.zip (64K)

    3、設置編譯環境

    Tools->Options->Directories

   Include fiels添加:

     c:\matlab\extern\include
     c:\matlab\extern\include\cpp

    Library fiels添加:

    c:\matlab\extern\lib
    c:\matlab\extern\include

  注:下面這個目錄是那些lib所在的地方。
  如果都挪到上面的目錄,這個自然就不要了。


   4、編寫程序

        用MCC命令生成的CPP文件和自己手工編寫的CPP文件, 其項目設置是完全相同的,
程序的語法原則上也是一樣的. 只是MCC生成的CPP文件有大量"沒用"的代碼.

     (1)添加自己編寫的程序模塊

           用下面文件頭:
           #include "stdafx.h"
           #include "matlab.hpp"
           然后, 按照C++ MathLib文檔要求的格式書寫程序.

      (2)嵌入mcc生成的文件

           在MATLAB下用下面格式的命令生成cpp文件
               mcc -t -L Cpp test

           得到test.hpp, test.cpp
           將test.cpp加入項目, 不做任何改動.

           最后,按F7編譯就可以了。

   5、實例

       上面羅羅嗦嗦一大堆,肯定讓你打哈欠了:P)

       沒關系,其實還是挺簡單的,這里有個VC的project,用C++數學庫解決了一個幼兒園的算
    術題,下載回去看看吧,馬上就明白了。

       MccDemo.zip (68K)

       這里先說明一下:
         MATLAB程序test.m:
       function [sum, prod]=test(x,y)
         sum = x+y;
         prod = x*y;

       用來計算兩個數的和與積。注意這是兩個返回變量的情況。
    另外,x,y當然可以是數組。

       用mcc命令生成了test.hpp和test.cpp。

    文件demo.cpp:

       #include "stdafx.h"
       #include "matlab.hpp"
       #include "test.hpp"

       void mccDemo()
       {
           CString str;
           mwArray x, y, sum, prod;
           double dx,dy,dsum,dprod;
           x = 5.0;
           y = 10.0;
           sum = test(&prod, x, y);

          dx=x(1,1);
          dy=y(1,1);
          dsum=sum(1,1);
          dprod=prod(1,1);
          str.Format("%f+%f=%f\n%f*%f=%f", dx,dy,dsum,dx,dy,dprod);

          AfxMessageBox(str);
       }

       由于采用了C++數學庫,語法很簡單。注意數組的賦值、其中數據的存取,這些都要仔細
    地看手冊。

       最后是跳出一個消息框,顯示計算結果。
       改程序啟動之后,選擇菜單mcc->demo即可。


     1. 目的

        一般情況下,我們都是在MATLAB命令行或DOS命令行下編譯MEX程序。
    所用的命令就是:mex filename.c

    這有很多不方便的地方:
        a. 雖然mex也可以編譯C++的mex程序,但是它的主框架仍是C的
        b. 當程序有多個模塊時,需要多次使用mex命令,操作很麻煩
        c. 不能利用VC特有的ClassWizard自動創建和維護類
        d. 不能用MFC類庫編寫應用程序
        e. 不能方便地進行類似VC的項目管理
        f. 等等...
          這樣一個命令行的編程環境可能會大大束縛你的想象力...
    其實解決問題的方法很簡單,下面以VC6環境為例詳細解說如何在IDE中編譯MEX程序。

2. 步驟

   (1)準備工作 (這里假設MATLAB的路徑為:C:\MATLAB)
      a. 由matlab.def創建庫文件matlab.lib
        進入c:\matlab\extern\include目錄,用lib命令生成matlib.lib
        C:\>cd \matlab\extern\include

        C:\MATLAB\extern\include>lib /def:matlab.def /out:matlab.lib
        Microsoft (R) Library Manager Version 6.00.8447
        Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

        LIB : warning LNK4068: /MACHINE not specified; defaulting to IX86
           Creating library matlab.lib and object matlab.exp

        C:\MATLAB\extern\include>
        警告信息不用理它。

      b. 修改mex.h
        該文件也在C:\MATLAB\extern\include目錄
        找到這一行:void mexFunction(
        替換為    : __declspec( dllexport ) void mexFunction(
        另保存為  :mex_vc.h

    (2)啟動VC,創建MFC AppWizard(dll)程序框架
    (3)設置系統選項

      a. 設定頭文件和庫文件路徑
           菜單Tools->Options->Directories
                Include files:添加c:\matlab\extern\include
                Library files:添加c:\matlab\extern\include

      b. 設置編譯連接選項
            菜單Project->Settings
            C/C++->Preprocessor definitions: 添加MATLAB_MEX_FILE
            Link->Object/Library modules:    添加matlab.lib
        注1. 其它優化、調試以及頭文件、庫文件等選項看情況調整
        注2. Release版在General->Microsoft Foundation Classes選項中,
             必須設置為Use MFC in a Static Library. 原因不明:(

    (4)編寫DLL主程序

        a. 文件名要用.cpp為擴展名,頭兩行必須是:
                #include "stdafx.h"
                #include "mex_vc.h"

        b. 編寫mexFunction函數,用如下格式聲明:
                void mexFunction(
                         int nlhs,       mxArray *plhs[],
                         int nrhs, const mxArray *prhs[]
                         )
                {
                        ...
                }

    (5) 象普通VC的DLL程序一樣繼續編寫其它部分程序,加入其它模塊

    (6) 調試錯誤,用F7編譯,生成DLL。我的例子:

--------------------Configuration: MatWave - Win32 Release--------------------
Compiling resources...
Compiling...
StdAfx.cpp
Compiling...
MatWave.cpp
sample.cpp
mex.cpp
Generating Code...
Linking...
   Creating library Release/MatWave.lib and object Release/MatWave.exp
LINK : warning LNK4089: all references to "SHELL32.dll" discarded by /OPT:REF
LINK : warning LNK4089: all references to "comdlg32.dll" discarded by /OPT:REF

MatWave.dll - 0 error(s), 2 warning(s)

        大功告成,有兩個警告,不理它。
        拿到MATLAB里面試試吧,不過要有非法操作和異常退出的心理準備哦:P

        另外:如果要在MATLAB運行中重新編譯DLL,需先執行: clear mex

ICQ  : 6821977
Email: obase@163.net
WWW  : http://obase.163.net






Matcom




第一章、概述

第二章、在Matlab中使用mex和mcc(作者dodoo,energy)
 2.1 用c編寫mex程序[1]--dodoo
 2.2 用c編寫mex程序[2]--dodoo
 2.3 用c編寫mex程序[3]--dodoo
 2.4 用c編寫mex程序[4]--dodoo
 2.5 用c編寫mex程序[5]--dodoo
 2.6 用c編寫mex程序[6]--dodoo
 2.7 VC++中使用MATLAB的C++數學庫和MCC生成的程序--energy

第三章、Matcom的使用
 3.1  概述
    3.1.1 Matcom能作什么
    3.1.2 Matcom的工作原理
    3.1.3 Matcom的不足
    3.1.4 Matcom下載地址及網絡資源
 3.2  版本及安裝注意事項
    3.2.1 MIDEVA 4.0 的安裝
    3.2.2 MIDEVA 4.5 的安裝
 3.3  用Matcom翻譯m文件
 3.4  如何得到CPP源文件
 3.5  在CB中C++與Matlab語言混編
 3.6  程序的發布

附錄一、Matcom的函數分類列表


第一章、概述

    Matlab是當今世界上使用最為廣泛的數學軟件,它具有相當強大的數值計算、
數據處理、系統分析、圖形顯示,甚至符號運算功能,是一個完整的數學平
臺,在這個平臺上,你只需寥寥數語就可以完成十分復雜的功能,大大提高了
工程分析計算的效率。另外由于Matlab的廣泛使用,于是出現了為各個領域專
門使用的工具箱(即在某一研究領域常用數學工具的函數包),這些工具箱的出現
更加促進了Matlab的流行。

    Matlab強大的功能只能在它所提供的平臺上才能使用,也就是說,你必需在
安裝有matlab系統的機器上使用.m文件,這樣就給工程計算帶來了很大不便;特
別是,在matlab中,使用的行解釋方式執行代碼,這樣大大地限制了代碼執行速度。
于是人們想到,能否開發一個matlab與其他高級語言的接口,這樣就可以把matlab
的強大功能融入各種應用程序中,并且通過高級語言編譯器編譯為2進制代碼,
從而大大提高了執行速度。

    于是matlab的5.1版本提供了自帶的C++ Complier,同時MathTools公司也為
Matlab開發了m文件高效解釋和調試IDE:MIDEVA。經過近兩年的發展,matlab 5.3
中的C complier--mcc版本已經為2.0,而MIDEVA最新版本為4.5。

    將matlab與C混合編程大概有如下三種方法:

1.用Matlab的mcc將.m文件翻譯為cpp源文件,然后在C編譯器中調用
  也可以用mcc編譯編譯為stand-alone程序。

2.用Matcom(MIDEVA)將.m文件翻譯為cpp代碼,并編譯為exe或dll
  文件。

3.按照matcom的語法,在VC或BCB中直接書寫matlab語句(與matlab
  很相似),這也是我最喜歡用的方法。

方法1和2/3各有利弊,1不支持圖形(支持圖形的庫國內現在還沒有D),
1對類支持也不夠,2支持絕大多數的matlab語句(包括圖形),但對
于struct等的支持也有缺陷。


http://obase.163.net/matlab/vcmcc.htm

VC++中使用MATLAB的C++數學庫和MCC生成的程序

0、簡介

    MATLAB5.3的提供了C/C++數學庫,其中的C++數學庫功能很強,使用它可以用類
似MATLAB的語法編寫C++程序,十分方便。雖然速度上仍然比手工C/C++程序慢,但是
由此換來的高效的開發效率和可靠性往往是值得的。另外mcc命令可以將M文件轉化
為C或CPP文件,編譯后可以脫離MATLAB運行,它們也是使用的C/C++數學庫。

    不過,MATLAB的數學庫在開發時似乎傾向于編譯獨立的可執行程序,把VC、BC只
是作為一個編譯和連接的工具,而沒有過多地考慮在VC、BC的集成環境下進行開發。
這給我們帶來了不便。
   
    很多網友問起如何將MCC生成的C++程序嵌入到VC。最近對這個問題做了一下嘗試,
在這里做一個總結,請大家回去試試。這里只介紹VC的情況,用BC的網友就自己研究

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品影视av免费| 国产女主播在线一区二区| 国产成人免费视频精品含羞草妖精| 亚洲国产视频一区| 亚洲一区在线看| 夜夜操天天操亚洲| 午夜视频一区二区三区| 亚洲国产精品一区二区尤物区| 一区二区三区四区不卡视频| 1024国产精品| 亚洲电影一区二区三区| 亚洲二区在线视频| 奇米精品一区二区三区在线观看| 日韩黄色片在线观看| 蜜臀精品一区二区三区在线观看| 美女一区二区久久| 国产一区二区三区久久久| 国产精品99久久久久久久vr | 亚洲色图一区二区三区| 国产精品大尺度| 一区二区三区欧美亚洲| 亚洲电影你懂得| 精品一区二区三区欧美| 成人精品鲁一区一区二区| 成人av一区二区三区| 欧美在线影院一区二区| 日韩免费一区二区| 国产精品美女久久久久久久久| 一区二区三区在线观看欧美 | 日韩免费高清av| 日本一区二区三区在线观看| 国产精品久久久一本精品| 亚洲综合免费观看高清完整版在线 | 在线视频中文字幕一区二区| 欧美视频你懂的| 欧美精品一区二区三区一线天视频| 国产精品三级久久久久三级| 无码av免费一区二区三区试看 | 4438成人网| 中文av字幕一区| 视频一区二区三区在线| 国产精品亚洲视频| 欧美午夜一区二区三区免费大片| 精品少妇一区二区三区在线播放| 国产性天天综合网| 天天影视色香欲综合网老头| 国产精品77777| 欧美美女视频在线观看| 中文字幕在线一区免费| 久久精品久久精品| 欧美天堂一区二区三区| 国产农村妇女精品| 免费看黄色91| 欧美午夜片在线观看| 中文字幕国产一区二区| 蜜臀精品久久久久久蜜臀| 色综合久久九月婷婷色综合| 久久网站最新地址| 美腿丝袜亚洲三区| 欧美精选一区二区| 一区二区三区日韩在线观看| 成人午夜伦理影院| 欧美精品一区二区三区久久久| 亚洲国产精品视频| 色综合亚洲欧洲| 亚洲国产精华液网站w| 国产做a爰片久久毛片| 欧美精三区欧美精三区| 亚洲国产婷婷综合在线精品| 91在线丨porny丨国产| 国产精品久久午夜夜伦鲁鲁| 国产传媒一区在线| 久久久久久久久蜜桃| 精品在线一区二区三区| 精品理论电影在线| 精品一区二区综合| 欧美国产精品劲爆| 激情综合亚洲精品| 日韩精品影音先锋| 蜜臀久久99精品久久久久宅男 | 久久综合久久综合亚洲| 另类小说视频一区二区| 欧美一二三区精品| 美女视频免费一区| 精品国产三级a在线观看| 激情综合色播激情啊| 欧美成人官网二区| 狠狠色综合日日| 国产色产综合产在线视频| 国产高清成人在线| 国产精品不卡在线| 在线观看视频一区二区欧美日韩| 亚洲一区二区三区四区五区中文| 欧美一a一片一级一片| 性久久久久久久久| 欧美精品一区二区三区蜜臀| 国产一区二区三区综合| 国产精品情趣视频| 在线免费观看一区| 裸体歌舞表演一区二区| 国产婷婷一区二区| 色噜噜狠狠色综合欧洲selulu| 亚洲v中文字幕| 欧美精品一区二区三区高清aⅴ| 成人免费黄色大片| 亚洲成人久久影院| 久久免费看少妇高潮| 一本大道综合伊人精品热热| 五月综合激情婷婷六月色窝| 欧美精品一区二区三区久久久| www.视频一区| 视频一区二区欧美| 欧美国产一区在线| 欧美天天综合网| 国产白丝网站精品污在线入口 | 精品视频一区三区九区| 久久97超碰色| 一区二区三区中文字幕电影| 日韩亚洲欧美一区| 99精品热视频| 狠狠色丁香婷综合久久| 亚洲高清免费在线| 国产精品入口麻豆九色| 91精品国产综合久久久久久 | 日本在线不卡视频一二三区| 国产精品久久久久精k8| 欧美性猛片xxxx免费看久爱| 精品一区二区三区免费毛片爱| 亚洲伦在线观看| 久久久久久夜精品精品免费| 欧美综合一区二区三区| 国产成人综合在线| 美女在线视频一区| 亚洲一二三级电影| 亚洲欧美日韩电影| 国产午夜久久久久| 欧美一级在线免费| 欧美三级韩国三级日本三斤| 成人午夜电影网站| 丁香婷婷综合色啪| 精品中文av资源站在线观看| 日韩电影在线观看电影| 亚洲资源中文字幕| 一区二区三区精品| 亚洲久草在线视频| ...av二区三区久久精品| 亚洲国产精品黑人久久久| 久久久三级国产网站| 日韩精品一区二区三区在线| 欧美日本在线观看| 69精品人人人人| 91精品国产免费| 欧美一区二区精品在线| 欧美伦理视频网站| 91麻豆精品国产无毒不卡在线观看| 麻豆国产精品一区二区三区| 另类的小说在线视频另类成人小视频在线| 亚洲成人自拍偷拍| 日日夜夜精品视频天天综合网| 亚洲二区视频在线| 日韩精品一区第一页| 青青青伊人色综合久久| 蜜乳av一区二区| 国产一区二区免费视频| 丰满白嫩尤物一区二区| 成人午夜av影视| 91女厕偷拍女厕偷拍高清| 91传媒视频在线播放| 欧美亚洲国产一区二区三区| 欧美美女bb生活片| 日韩视频免费直播| 国产日韩欧美一区二区三区综合| 中文天堂在线一区| 亚洲精品国产一区二区精华液| 一区二区三区精品久久久| 日本视频免费一区| 国产最新精品免费| 色综合一区二区| 欧美一区二区大片| 国产精品乱码一区二三区小蝌蚪| 亚洲精品视频自拍| 免费人成在线不卡| av午夜精品一区二区三区| 在线一区二区观看| 精品少妇一区二区三区免费观看| 中文字幕乱码日本亚洲一区二区| 最新日韩av在线| 日本特黄久久久高潮| 成人黄色av网站在线| 欧美色综合影院| 久久久久国产精品麻豆ai换脸 | 欧美三级视频在线| 精品国产伦一区二区三区观看体验| 国产精品三级av| 久久福利资源站| 欧美影院一区二区三区| 国产精品视频看| 久久99精品久久久久久动态图| 成人sese在线| 欧美大片在线观看一区二区|