欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Qt調(diào)用MATLAB引擎混合編程的過程詳解

 更新時(shí)間:2024年01月16日 10:06:00   作者:spic_jackmaster  
這篇文章給大家介紹了Qt調(diào)用MATLAB引擎混合編程的全過程,文中通過圖文結(jié)合的方式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下

0、前言

C/C++調(diào)用MATLAB有三個(gè)方式:調(diào)用dll文件、調(diào)用exe可執(zhí)行程序和調(diào)用Engin引擎。

第一種方式利用MATLAB Coder 將MATLAB代碼生成C/C++代碼和相關(guān)動(dòng)態(tài)鏈接庫,可以在沒有MATLAB的電腦和設(shè)備上運(yùn)行。

第二種方式利用MATLAB將MATLAB代碼編譯成exe可執(zhí)行文件,由C/C++調(diào)用exe從而實(shí)現(xiàn)混合調(diào)用,需要在執(zhí)行機(jī)上安裝MCR運(yùn)行環(huán)境, MATLAB Component Runtime,MCR。

第三種方式直接調(diào)用MATLAB計(jì)算引擎,相當(dāng)于進(jìn)程調(diào)用,后臺(tái)開一個(gè)MATLAB應(yīng)用,通過C API傳參數(shù)和接收MATLAB的返回結(jié)果,需要安裝MATLAB。

1、環(huán)境配置

Qt調(diào)用matlab引擎需要二者的軟件位數(shù)一致。本文實(shí)現(xiàn)的環(huán)境如下:

  • Qt 6.2.1 64bit
  • matlab 2018b 64bit
  • MinGW64 版本mingw810_64

1.1 MATLAB配置C編譯器

配置MATLAB的C編譯器與Qt的C編譯器為同一個(gè)MinGW,如果沒有MinGW則需要去下載。由于安裝Qt過程中選擇了MinGW,因此,MATLAB直接配置該MinGW。可以臨時(shí)設(shè)置MinGW環(huán)境變量,但是關(guān)閉MATLAB后該變量就消失了,下次啟動(dòng)MATLAB需要重新設(shè)置。

setenv('MW_MINGW64_LOC','D:\Tools\Qt_6.2.0_64Bit\Qt\Tools\mingw810_64')

可以通過設(shè)置系統(tǒng)環(huán)境變量,下次啟動(dòng)MATLAB后不用再次設(shè)置。

設(shè)置MinGW環(huán)境變量之后,可以配置MATLABd C語言編譯器,此時(shí)選擇C++。

1.2 QT配置MATLAb Engine環(huán)境

Qt項(xiàng)目文件Pro添加依賴Engine的依賴,包括頭文件和庫(libgeng ligmat libmx ligmex等),比較簡(jiǎn)單。

如果MATLAB的路徑中有空格,例如C:/Program Files之類的,需要用到 $$quote處理。

2、測(cè)試

以下示例展示Qt調(diào)用MATLAb引擎繪制一個(gè)sin函數(shù)。

如果編譯成功但是執(zhí)行崩潰,則可能是沒有找到相應(yīng)的MATLAB(添加一個(gè)matlab的bin下邊的win64目錄,例如:D:\Tools\matlab2018b\bin\win64),此時(shí)系統(tǒng)環(huán)境變量中添加或者在QT項(xiàng)目中添加。

QT中添加環(huán)境變量如下:

系統(tǒng)環(huán)境變量添加方法如下:

可能會(huì)出現(xiàn)執(zhí)行交慢的情況,已經(jīng)打開的MATLAB Command Window不要關(guān)閉,下次啟動(dòng)就會(huì)更快一些。以上是簡(jiǎn)單的引擎測(cè)試,數(shù)據(jù)傳遞和接收可以根據(jù)MATLAB官方文檔進(jìn)行查詢。

以上就是Qt調(diào)用MATLAB引擎混合編程的過程詳解的詳細(xì)內(nèi)容,更多關(guān)于Qt調(diào)用MATLAB的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • c語言文件讀寫示例(c語言文件操作)

    c語言文件讀寫示例(c語言文件操作)

    這篇文章主要介紹了c語言文件讀寫示例(c語言文件操作),需要的朋友可以參考下
    2014-02-02
  • C++集體數(shù)據(jù)交換實(shí)現(xiàn)示例講解

    C++集體數(shù)據(jù)交換實(shí)現(xiàn)示例講解

    這篇文章主要介紹了C++集體數(shù)據(jù)交換實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-11-11
  • C++ namespace命名空間解析

    C++ namespace命名空間解析

    考慮一種情況,當(dāng)我們有兩個(gè)同名的人,Zara,在同一個(gè)班里。當(dāng)我們需要對(duì)它們進(jìn)行區(qū)分我們必須使用一些額外的信息和它們的名字,比如它們生活在不同的區(qū)域或者興趣愛好什么的,在C++程序中也會(huì)遇到同樣的情況,所以命名空間就此產(chǎn)生
    2021-11-11
  • C++帶有指針成員的類處理方式詳解

    C++帶有指針成員的類處理方式詳解

    這篇文章主要為大家詳細(xì)介紹了C++帶有指針成員的類處理方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • C語言鏈接屬性的實(shí)踐應(yīng)用

    C語言鏈接屬性的實(shí)踐應(yīng)用

    C語言中鏈接屬性決定如何處理在不同文件中出現(xiàn)的標(biāo)示符,下面這篇文章主要給大家介紹了關(guān)于C語言鏈接屬性的實(shí)踐應(yīng)用,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • Qt物聯(lián)網(wǎng)管理平臺(tái)之實(shí)現(xiàn)數(shù)據(jù)查詢導(dǎo)出打印

    Qt物聯(lián)網(wǎng)管理平臺(tái)之實(shí)現(xiàn)數(shù)據(jù)查詢導(dǎo)出打印

    這篇文章主要為大家介紹了如何利用Qt編寫物聯(lián)網(wǎng)管理平臺(tái)中數(shù)據(jù)查詢導(dǎo)出打印的功能,文字的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-07-07
  • C++中的Reactor原理與實(shí)現(xiàn)

    C++中的Reactor原理與實(shí)現(xiàn)

    reactor設(shè)計(jì)模式是event-driven?architecture的一種實(shí)現(xiàn)方式,處理多個(gè)客戶端并發(fā)的向服務(wù)端請(qǐng)求服務(wù)的場(chǎng)景,每種服務(wù)在服務(wù)端可能由多個(gè)方法組成,這篇文章主要介紹了Reactor原理與實(shí)現(xiàn),需要的朋友可以參考下
    2022-07-07
  • Qt簡(jiǎn)單編程實(shí)現(xiàn)UDP通訊

    Qt簡(jiǎn)單編程實(shí)現(xiàn)UDP通訊

    UDP數(shù)據(jù)報(bào)協(xié)議是一個(gè)面向無連接的傳輸層報(bào)文協(xié)議,它簡(jiǎn)單易用,不存在?TCP協(xié)議“粘包”的問題,下面我們就來看看如何使用qt簡(jiǎn)單實(shí)現(xiàn)UDP通訊吧
    2024-04-04
  • gdb調(diào)試命令的使用及總結(jié)

    gdb調(diào)試命令的使用及總結(jié)

    gdb是一個(gè)在UNIX環(huán)境下的命令行調(diào)試工具。如果需要使用gdb調(diào)試程序,請(qǐng)?jiān)趃cc時(shí)加上-g選項(xiàng)。下面的命令部分是簡(jiǎn)化版,比如使用l代替list等等
    2013-05-05
  • C++實(shí)現(xiàn)動(dòng)態(tài)分配const對(duì)象實(shí)例

    C++實(shí)現(xiàn)動(dòng)態(tài)分配const對(duì)象實(shí)例

    這篇文章主要介紹了C++實(shí)現(xiàn)動(dòng)態(tài)分配const對(duì)象實(shí)例,包括了const對(duì)象的創(chuàng)建、刪除及應(yīng)用實(shí)例,需要的朋友可以參考下
    2014-10-10

最新評(píng)論