精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

淺析將matlab函數(shù)編譯成dll供Cpp調(diào)用的方法

開發(fā) 開發(fā)工具
這里將介紹如何通過將matlab函數(shù)編譯成dll供Cpp調(diào)用的方法,這里增加了面向?qū)ο蟮牡臄U展mwArray,希望本文能對大家有所幫助。

作者曾經(jīng)實現(xiàn)過將matlab函數(shù)編譯成dll供Cpp調(diào)用,這篇文章的目的是對新增的面向?qū)ο蟮牡臄U展mwArray進行講解,matlab很容易和C/C++聯(lián)合起來使用。

以前做過matlab7與c++的混合編程:將matlab函數(shù)編譯成dll給C++調(diào)用,從而加快開發(fā)的進度。但是今天在matlab2008b下面又做了一遍,發(fā)現(xiàn)matlab又改了很多東西,諸如增加了面向?qū)ο蟮牡臄U展mwArray,于是做筆記如下。

(一) 總體概念

matlab提供了豐富的程序接口,除了matlab最初的版本是用fortran寫的之外,后來的版本都是用C寫的,因此matlab很容易和C/C++聯(lián)合起來使用。

matlab有著豐富的庫函數(shù),將這些庫函數(shù)直接編譯成dll(windows下是dll,linux下是類似于dll的另外一個東西),給C調(diào)用,可以加快工程進度。

步驟如下:

1. 設(shè)置matlab的編譯器,使用外部的VC或者gcc等編譯器。

2. 編譯m文件成dll

3. 設(shè)置VC等的繼承環(huán)境,設(shè)置C需要用到的靜態(tài)庫和動態(tài)庫

4. 編寫C調(diào)用dll

下面以一個很簡單的加法函數(shù)為例,說明在VC6和matlab2008b下,怎么做混合編程

(二) 設(shè)置matlab編譯器

過程如下:

1. 在matlab的command window里面敲入mex –setup,matlab會列出所有電腦上所有的編譯器。

2. 選擇編譯器,這里選擇2,即VC6

設(shè)置matlab編譯器

3.完成之后,敲入mbuild –setup,選擇build工具,matlab會列出所有的build工具,同樣選擇VC6

選擇編譯器

(三) 編譯m文件

首先,寫出matlab函數(shù),一個很簡單的加法函數(shù),如下:

  1. function [c] = MyAdd(a, b);   
  2. c = a + b;  

保存為MyAdd.m

然后,進行編譯,命令如下:

mcc -W cpplib:libMyAdd -T link:lib MyAdd

其中,mcc是matlab提供的編譯命令(可以理解為gcc),對于這一點,matlab的幫助說明如下:

-W lib:string link:lib

其中-W是控制編譯之后的封裝格式,cpplib,是指編譯成C++的lib,cpplib冒號后面是指編譯的庫的名字,-T表示目標,link:lib表示要連接到一個庫文件的目標,目標的名字是后面的MyAdd,即你寫的m函數(shù)的名字。

運行完之后,你的目錄下面,將會出現(xiàn)以下一些文件:

libMyAdd.cpp

libMyAdd.exp

libMyAdd.dll

libMyAdd.exports

libMyAdd.h

libMyAdd.prj

libMyAdd_mcc_component_data.c

mccExcludedFiles.log

readme.txt

具體每一個文件的意思,請查幫助,這里只說其中很有用的幾個:

libMyAdd.dll是編譯好的動態(tài)庫,MyAdd這個函數(shù)封裝在里面,libMyAdd.h是對應(yīng)的頭文件,在C里面調(diào)用這個函數(shù)的時候,需要include這個頭文件,在這個頭文件的***,你可以看到下面的內(nèi)容:

extern LIB_libMyAdd_CPP_API void MW_CALL_CONV MyAdd(int nargout, mwArray& c

, const mwArray& a

, const mwArray& b);

這就是MyAdd的C函數(shù)的聲明。

nargout表示輸出變量的個數(shù)

a,b,c就是對應(yīng)了m函數(shù)的幾個變量

注意,a,b,c三個變量的類型是mwArray,這是matlab提供的一個特殊的變量類型(在7.0的版本,編譯之后,變量類型是mxArray)。mwArray是一個類,具體可以查幫助,當然后面也會講到。

(四) 設(shè)置VC環(huán)境

有了上面的準備,需要設(shè)置VC環(huán)境,好讓lib和dll能被成功的調(diào)用。

1. 首先建立一個控制臺工程(這個我就不詳細講了,太easy了)

2. 然后,在tool-option-directory里面設(shè)置用到的lib和include頭文件的位置

首先是include頭文件的位置,看***一行(這個根據(jù)每一個人的安裝目錄可能不一樣,自己去找吧)

設(shè)置VC環(huán)境

然后是lib的位置,不盡包括matlab的靜態(tài)庫的位置,還包括剛剛編譯出來的lib的位置,見圖的后面兩個,不用我解釋吧

matlab的靜態(tài)庫的位置

你可以打開這兩個目錄,看看里面到底有哪些頭文件和lib,首先來講,我們這里要用到的頭文件包括:

#include "mclmcr.h"

#include "matrix.h"

#include "mclcppclass.h"

#include "libMyAdd.h"

lib包括

mclmcrrt.lib libmx.lib libmat.lib mclmcr.lib

你可以到具體的路徑下看一看,有沒有上面幾個lib和頭文件

路徑設(shè)好了,需要制定具體用到的lib了,在project Setting-link-Object/library modules里面加入上面提到的幾個lib(具體幾個lib到底做什么用的,這里不講了,看幫助,或者你試驗刪去幾個lib能不能工作,就大概可以猜得到他們是干什么的了)

clip_image009

3. 將編譯好的dll復(fù)制到VC工程的Debug或者Release目錄下,以使得dll可以被找到。

(五) 寫Cpp調(diào)用dll

所有任務(wù)完成之后,開始寫Cpp試驗調(diào)用編譯之后的函數(shù)了。

首先,包含應(yīng)有的頭文件:

  1. #include "mclmcr.h"   
  2. #include "matrix.h"   
  3. #include "mclcppclass.h"   
  4. #include "libMyAdd.h"   
  5. #include   
  6. #include  

然后,寫main函數(shù):

  1. int main(void)   
  2. {   
  3. double a = 6;   
  4. double b = 9;   
  5. double c;   
  6. // initialize lib,這里必須做初始化!   
  7. if( !libMyAddInitialize())   
  8. {   
  9. std::cout << "Could not initialize libMyAdd!" << std::endl;   
  10. return -1;   
  11. }   
  12. // 為變量分配內(nèi)存空間,可以查幫助mwArray   
  13. mwArray mwA(1, 1, mxDOUBLE_CLASS); // 1,1表示矩陣的大小(所有maltab只有一種變量,就是矩陣,為了和Cpp變量接軌,設(shè)置成1*1的矩陣,mxDOUBLE_CLASS表示變量的精度)   
  14. mwArray mwB(1, 1, mxDOUBLE_CLASS);   
  15. mwArray mwC(1, 1, mxDOUBLE_CLASS);   
  16. // set data,不用我解釋了吧,很簡單的,調(diào)用類里面的SetData函數(shù)給類賦值   
  17. mwA.SetData(&a, 1);   
  18. mwB.SetData(&b, 1);   
  19. // using my add,掉我自己寫的函數(shù)   
  20. MyAdd(1, mwC, mwA, mwB);   
  21. // get data,不用我解釋了吧,很簡單的,調(diào)用類里面的Get函數(shù)獲取取函數(shù)返回值   
  22. c = mwC.Get(1, 1);   
  23. printf("c is %f\n", c);   
  24. // 后面是一些終止調(diào)用的程序   
  25. // terminate the lib   
  26. libMyAddTerminate();   
  27. // terminate MCR   
  28. mclTerminateApplication();   
  29. return 0;   
  30. }  

運行結(jié)果如下:

運行結(jié)果

【編輯推薦】

  1. VC++與MATLAB混合編程及其應(yīng)用
  2. C#創(chuàng)建、調(diào)用dll:冒泡排序
  3. 如何用Visual C#生成DLL文件
  4. 淺析Visual C#編寫DLL
  5. 簡單介紹C# DLL函數(shù)
責任編輯:彭凡 來源: 清華大學出版社
相關(guān)推薦

2021-08-18 08:00:00

Emscripten開發(fā)技術(shù)

2015-04-15 09:28:45

JavaScript熱門工具

2018-10-31 14:00:05

LispJavaScript編程語言

2009-12-16 10:15:58

VS2003編譯

2009-08-05 09:40:02

C#調(diào)用DLL函數(shù)

2009-08-05 09:30:39

C#調(diào)用DLL函數(shù)

2009-07-31 17:28:35

C#語言調(diào)用DLL

2021-05-18 14:25:30

Linux運維Linux系統(tǒng)

2019-05-24 16:20:11

Python 開發(fā)編程語言

2009-08-03 12:57:27

C#調(diào)用DLL

2023-07-27 07:29:44

.NetMSIL工具

2009-12-14 16:44:56

Ruby調(diào)用DLL

2009-08-14 15:07:00

C#編譯過程

2010-03-23 10:47:46

python代碼

2010-01-26 14:10:22

Visual C++

2009-11-30 09:27:38

VS2003源代碼

2009-08-07 17:22:36

C#調(diào)用dll導(dǎo)出函數(shù)

2011-06-28 13:12:07

Qt 調(diào)用 DLL DLL

2009-07-03 13:22:37

調(diào)用Servlet

2009-08-14 09:15:28

C#調(diào)用構(gòu)造函數(shù)
點贊
收藏

51CTO技術(shù)棧公眾號

成人影欧美片| 中文亚洲av片在线观看| 天堂电影一区| 久久久久国产精品人| 国产精品色悠悠| 一起草在线视频| 女人天堂av在线播放| 91麻豆精东视频| 91探花福利精品国产自产在线 | 老司机亚洲精品一区二区| 亚洲综合男人的天堂| 亚洲综合在线中文字幕| 国产微拍精品一区| 亚洲一区 二区 三区| 国产视频在线一区二区| 色婷婷激情视频| 欧美黄色网页| 亚洲综合偷拍欧美一区色| 俄罗斯精品一区二区| 国产亚洲欧美精品久久久久久| 欧美国产亚洲精品| 欧美在线免费播放| 男女日批视频在线观看| 中国日本在线视频中文字幕| 久久国产精品区| 91精品国产91久久久| 国产精品丝袜一区二区| 免费看成人哺乳视频网站| 日韩精品在线看片z| 久久久国产一区| 亚洲国产精品嫩草影院| 国产69精品久久久久99| 娇小11一12╳yⅹ╳毛片| 午夜精品影视国产一区在线麻豆| 日本高清视频一区二区| 久久这里只有精品23| 2020国产在线视频| 国产精品传媒在线| 午夜精品美女久久久久av福利| 亚洲专区第一页| 久久大逼视频| 88xx成人精品| 91av手机在线| 欧美色蜜桃97| 国产香蕉一区二区三区在线视频| 久久久精品高清| 欧美大片黄色| 亚洲最快最全在线视频| 国产香蕉一区二区三区| 美女免费久久| 中文字幕综合网| 在线亚洲美日韩| 思思99re6国产在线播放| 国产婷婷色一区二区三区在线| 91在线视频导航| 国产老妇伦国产熟女老妇视频| 亚洲理伦在线| 91国内免费在线视频| 日韩毛片在线视频| 亚洲看片一区| 日韩av高清不卡| 国产一级片一区二区| 日本免费新一区视频| 国产精品欧美日韩一区二区| 国产成人精品一区二区色戒| 久久国产福利国产秒拍| 欧美一区二区视频97| 少妇太紧太爽又黄又硬又爽| 亚洲欧美网站| 国产精品美女www| 国产精品7777777| 亚洲影音一区| 国产精品久久婷婷六月丁香| 中文字幕欧美人妻精品一区蜜臀| 亚洲黄色一区| 欧美孕妇孕交黑巨大网站| 国产精品免费精品一区| 麻豆高清免费国产一区| 91精品国产一区二区三区动漫| 欧美激情一区二区三区免费观看| 国产日韩综合| 国产精品第七十二页| 国产精品热久久| 秋霞午夜av一区二区三区| 久久男人的天堂| 精品人妻一区二区色欲产成人| 亚洲三级国产| 国产精品成人av在线| 中文字幕久久久久| 国产成人免费高清| 欧美日韩在线精品| 黄色免费网站在线| 精品日本高清在线播放 | 国产一区二区三区电影在线观看 | 青青草免费在线视频| 国产精品日韩成人| 国产欧美日韩小视频| 欧美暴力调教| 亚洲精品一区二区三区影院| 久久精品国产亚洲AV熟女| 我不卡伦不卡影院| 97精品一区二区三区| 在线中文字幕网站| 95精品视频在线| 精品一区二区三区自拍图片区| 蜜桃久久一区二区三区| 成人av综合一区| 性欧美精品一区二区三区在线播放| 国产区视频在线| 亚洲尤物在线视频观看| 日韩不卡一二三| 亚州综合一区| 欧美国产日韩一区二区在线观看 | 亚洲qvod图片区电影| 亚州av在线播放| 曰韩精品一区二区| 成人免费在线观看视频网站| 成人看片爽爽爽| 最近2019好看的中文字幕免费| 国产一区第一页| 国产精品婷婷| 国产精品免费在线免费| 国产永久免费视频| 国产校园另类小说区| 霍思燕三级露全乳照| 中日韩脚交footjobhd| 日韩欧美一区二区视频| 亚洲色图100p| 日韩和的一区二区| 久久婷婷人人澡人人喊人人爽| 精品视频二区| 精品色蜜蜜精品视频在线观看| 成年人小视频网站| 久久免费视频66| 久久久免费电影| 国产黄色免费大片| 亚洲日本在线视频观看| 男生操女生视频在线观看| 精品国产乱码久久久久久蜜坠欲下| 日韩中文第一页| 久久久久久av无码免费看大片| 国产iv一区二区三区| avove在线观看| 日韩午夜电影免费看| 在线观看免费高清视频97| 国产一级片免费在线观看| 91女人视频在线观看| 北条麻妃69av| 亚洲+变态+欧美+另类+精品| 欧洲亚洲女同hd| 欧美高清电影在线| 色一区在线观看| 一级片视频免费看| 乱码第一页成人| 三区精品视频| 欧美在线se| 久久这里有精品| av中文字幕免费在线观看| 久久夜色精品国产噜噜av| 色综合久久久久无码专区| 亚洲精品一区av| 最近2019中文字幕一页二页| 国产精品视频无码| 亚洲免费视频中文字幕| 麻豆免费在线观看视频| 影音先锋亚洲一区| 蜜桃狠狠色伊人亚洲综合网站| 在线电影福利片| 欧美xxx久久| 亚洲波多野结衣| 国产精品一二三区在线| 一卡二卡三卡视频| 久久99视频| 91国产一区在线| 国产中文在线视频| 在线不卡免费欧美| 天天操天天射天天爽| 久久品道一品道久久精品| 99久久久无码国产精品6| 久久综合成人| 成人午夜电影免费在线观看| 中文字幕在线中文字幕在线中三区| 日韩欧美激情在线| 久久国产精品系列| 中文字幕成人av| 另类小说第一页| 伊人成综合网| 欧美lavv| 韩国美女久久| 久热精品视频在线免费观看| 五月天婷婷激情网| 欧美精品自拍偷拍| 久久夜靖品2区| eeuss国产一区二区三区| 免费看日本黄色| 亚洲国产合集| 7777精品久久久大香线蕉小说| 成人在线影视| 精品亚洲va在线va天堂资源站| 久久草视频在线| 自拍偷拍欧美精品| 亚洲人成人无码网www国产 | 欧美区国产区| 狠狠久久综合婷婷不卡| 不卡亚洲精品| 97超碰国产精品女人人人爽| 深夜福利视频在线免费观看| 欧美日韩一二区| 日韩免费不卡视频| 26uuu久久综合| 国产亚洲色婷婷久久| 日韩中文欧美在线| 秋霞无码一区二区| 一区二区在线影院| 在线免费观看成人网| 九一亚洲精品| 精品日本一区二区三区在线观看| 成人爱爱网址| 久久久久久久久久久国产| 天堂在线资源库| 欧美一级艳片视频免费观看| 青青国产在线视频| 欧美日韩国产精品一区| 精品处破女学生| 亚洲三级在线免费| 99热6这里只有精品| 中文字幕av免费专区久久| 亚洲熟妇无码av| 99精品久久只有精品| 无码人妻丰满熟妇区毛片蜜桃精品 | 极品少妇xxxx精品少妇| 奇米888一区二区三区| 国产suv精品一区| 欧日韩在线观看| 91超碰免费在线| 欧美激情欧美激情| 午夜av在线免费观看| 不卡中文字幕av| 国产网站在线免费观看| 中文字幕最新精品| 98在线视频| 色妞色视频一区二区三区四区| 亚洲精品97久久中文字幕无码| 狠狠躁18三区二区一区| 国产一区二区三区影院| 天天综合色天天综合色h| 国产成人精品亚洲男人的天堂| 中文字幕国产精品一区二区| 男女做爰猛烈刺激| 日本一区二区三区在线不卡| 国产一二三四区在线| 国产精品美女久久久久久久| 成人性生活免费看| 激情五月婷婷综合| 涩多多在线观看| 国产精品91一区二区| 国产清纯白嫩初高中在线观看性色| 日本在线不卡视频| 污污的网站18| 精品无人码麻豆乱码1区2区 | 亚洲欧美日本视频在线观看| 噜噜噜久久亚洲精品国产品麻豆| 99久久影视| av影院在线播放| 亚洲国产激情| 日本免费成人网| 午夜激情一区| 少妇av一区二区三区无码| 欧美激情91| 免费在线观看视频a| 亚洲欧美日韩国产一区二区| 日本在线观看免费视频| 免播放器亚洲| 亚洲美女性囗交| 国产凹凸在线观看一区二区| 国产精品久久无码| 国产女人水真多18毛片18精品视频| 国产黑丝一区二区| 国产丝袜在线精品| 91狠狠综合久久久| 亚洲成人免费视频| 欧美 亚洲 另类 激情 另类| 日韩小视频在线观看专区| 影音先锋国产在线| 日韩午夜激情视频| 欧美高清成人| 欧美成人免费在线观看| 在线人成日本视频| 91久久久久久久| 偷拍亚洲色图| 伊人网在线免费| 午夜在线精品偷拍| 粗大的内捧猛烈进出视频| 91亚洲国产成人精品一区二区三| 手机免费看av片| 成人av资源在线| 国产精品成人在线视频| 亚洲国产综合在线| 影音先锋黄色网址| 亚洲精品永久免费精品| av色综合久久天堂av色综合在| 九九热视频这里只有精品| 电影网一区二区| 99久久一区三区四区免费| 欧美午夜精彩| aa在线观看视频| 国产成人在线网站| 极品久久久久久久| 欧美日韩精品在线视频| 精品人妻一区二区三区浪潮在线| 日韩欧美一区中文| 黄色小视频免费在线观看| 最新国产成人av网站网址麻豆| 日本中文字幕在线观看| 91精品国产九九九久久久亚洲| 成人免费影院| 国产精品久久亚洲7777| 亚洲综合图色| 97超碰人人澡| 国产成人综合在线观看| 可以免费看av的网址| 亚洲制服丝袜在线| 国产精品久久久久久久久久久久久久久久| 51精品视频一区二区三区| 精品欧美一区二区精品少妇| 综合激情国产一区| 亚洲伦乱视频| 久久综合九色99| 91精品国产乱码久久久久久| 人妻av无码专区| 国产一区二区三区蝌蚪| 久久av红桃一区二区禁漫| 欧美三级午夜理伦三级中视频| www.天天干.com| 久久夜精品香蕉| 国产精品久久久久久av公交车| 好看的日韩精品| 激情婷婷久久| 稀缺小u女呦精品呦| 亚洲一区中文在线| 午夜精品久久久久久久99| 免费成人高清视频| 日韩精品一区国产| 日韩三级电影网站| 久久久一二三| 娇妻被老王脔到高潮失禁视频| 亚洲一级二级在线| 亚洲第一页视频| 国语自产精品视频在线看| 伊人久久大香| 欧美一区二区三区成人久久片| 中文在线日韩| 国产精品拍拍拍| 国产精品麻豆视频| 国产精品视频一二区| 欧美久久精品一级黑人c片| 亚洲成人偷拍| 亚洲美免无码中文字幕在线| 国产在线一区观看| 少妇无套高潮一二三区| 欧美日韩性生活| av黄色在线| 黑人另类av| 日本va欧美va瓶| 美女洗澡无遮挡| 欧美日韩一区二区三区四区| 精品视频在线一区二区| 高清视频一区| 蜜桃久久av| 日韩av网站在线播放| 91精品国产综合久久香蕉的特点| av资源种子在线观看| 成人午夜激情免费视频| 亚洲精品韩国| 成人在线手机视频| 日韩一级高清毛片| 尤物视频在线看| 久久精品国产第一区二区三区最新章节| 综合久久亚洲| 久久久久久久无码| 欧美日韩国产小视频| av中文字幕在线观看第一页| 四虎影院一区二区三区 | 国产精品视频第一区| 国产日产亚洲系列最新| 992tv在线成人免费观看| 日韩啪啪电影网| 日本69式三人交| 欧美精品欧美精品系列| 日本蜜桃在线观看视频| 精品视频一区二区| 亚洲清纯自拍| 久久精品国产亚洲精品| 天天综合网在线观看| 国产精品久久一区主播| 国产亚洲一区二区三区不卡| 亚洲制服在线观看| 伊人夜夜躁av伊人久久| 飘雪影院手机免费高清版在线观看| 2019av中文字幕|