第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用GCC(MinGW)作為MATLAB的MEX編譯器

使用GCC(MinGW)作為MATLAB的MEX編譯器

月關(guān)寶盒 2019-11-13 14:24:34
我得到了一個(gè)在MATLAB R2011a上運(yùn)行的項(xiàng)目。由于其中存在多個(gè).c文件-我需要將GCC設(shè)置為該項(xiàng)目的MEX編譯器。但是,我似乎找不到任何有關(guān)如何設(shè)置它的解釋。我嘗試了一個(gè)名為gnumex的腳本程序-但失敗了(可能是為舊版本的MATLAB設(shè)置的)。知道如何設(shè)置嗎?
查看完整描述

3 回答

?
哈士奇WWW

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊

在Matlab 2011b中,只需在mingw64或cygwin環(huán)境中直接編譯和鏈接即可。


MINGWPATH=c:/MinGW64

CYGPATH=c:/cygwin


MATLABROOT=c:/Progra~1/MATLAB/R2011b

CC=$(MINGWPATH)/bin/x86_64-w64-mingw32-gcc 

CFLAG= -Wall -m64 -O3 -I$(MATLABROOT)/extern/include $(SRC) $(LIBS) -o $(EXE)

MEXFLAG=-m64 -shared -DMATLAB_MEX_FILE -I$(MATLABROOT)/extern/include -Wl,--export-all-symbols $(LIBS) $(MEXSRC) -o $(MEXTGT).mexw64


LIBS= -L$(MATLABROOT)/bin/win64 -L$(MATLABROOT)/extern/lib/win64/microsoft -lmex -lmx -lmwlapack -lmwblas -leng

EXE=../bin/engwindemo.exe

MEXTGT=

SRC=engwindemo.c

MEXSRC=

all:$(EXE)


$(EXE):  $(SRC)

    $(CC) $(CFLAG) -ladvapi32 -luser32 -lgdi32 -lkernel32 -lmingwex -o $(EXE)

    @rm -f *.o*


$(MEXTGT):  $(MEXSRC)

    $(CC) $(MEXFLAG) -ladvapi32 -luser32 -lgdi32 -lkernel32 -lmingwex 

    @rm -f *.o*

將此makefile放在源代碼目錄和上make。無(wú)需dll文件轉(zhuǎn)換。


查看完整回答
反對(duì) 回復(fù) 2019-11-13
?
慕無(wú)忌1623718

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊

為什么不調(diào)整目錄中的mexopts.bat文件?這樣,您可以像在MATLAB中一樣,透明地使用“ mex”命令來(lái)編譯任何內(nèi)容,就像通過(guò)MATLAB使用來(lái)配置一樣mex -setup。我很驚訝以前沒(méi)有人這樣做。


以下文件適用于x64版本的Matlab和Mingw。我正在使用TDM Mingw64發(fā)行版,該發(fā)行版安裝在中p:\mingw64-tdm。我已經(jīng)安裝了p:\matlab\R2012aMatlab-進(jìn)行相應(yīng)編輯。


這是我正在使用的mexopts.bat文件,請(qǐng)將其復(fù)制粘貼到%USERPROFILE%\AppData\Roaming\MathWorks\MATLAB\R2012a\mexopts.bat:


@echo off


set MINGWPATH=p:\mingw64-tdm

set PATH=%MINGWPATH%\bin;%PATH%


set COMPILER=gcc

set COMPFLAGS=-c -m64 -I"%MATLAB%\extern\include" -DMATLAB_MEX_FILE -Wall -std=c99

set OPTIMFLAGS=-O3 -DNDEBUG

set DEBUGFLAGS=-g

set NAME_OBJECT=-o


set LINKER=gcc

set LINKFLAGS=-shared -L"%MATLAB%\bin\win64" -L"%MATLAB%\extern\lib\win64\microsoft" -lmex -lmx -leng -lmat -lmwlapack -lmwblas

set NAME_OUTPUT=-o "%OUTDIR%%MEX_NAME%%MEX_EXT%"

然后,您可以嘗試在Matlab中執(zhí)行以下操作:


mex -v p:\matlab\R2012a\extern\examples\mex\yprime.c

which yprime

應(yīng)該產(chǎn)生b:\code\m\yprime.mexw64(或任何當(dāng)前文件夾)。然后,如果您這樣做:


yprime(1,1:4)

您應(yīng)該看到:


ans =

    2.0000    8.9685    4.0000   -1.0947

這意味著您在做生意。祝好運(yùn)!


編輯2014年10月:我現(xiàn)在使用比上面改進(jìn)的mexopts.bat文件,使用不同的MinGW64(比TDM的二進(jìn)制代碼生成速度稍快)。有關(guān)詳細(xì)信息和下載,請(qǐng)參見我的主頁(yè)。


查看完整回答
反對(duì) 回復(fù) 2019-11-13
?
有只小跳蛙

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊

從MATLAB R2015b開始,已正式支持MinGW!

現(xiàn)在,它在受支持的編譯器列表的頂部。


有關(guān)下載MinGW 的官方說(shuō)明,請(qǐng)參見此處(他們建議使用TDB-GCC)。


有列出了一些限制和警告(如不與其他編譯器編譯庫(kù)的鏈接,你必須抓住MEX文件中的例外,等等)。


下面是我制作XML文件以執(zhí)行相同操作的舊方法。


過(guò)去的歲月已經(jīng)過(guò)去,MATLAB(從R2014a開始)已轉(zhuǎn)移到用于配置MEX文件的基于XML的新系統(tǒng)。目前,MATLAB仍暫時(shí)支持舊版.bat文件,但它會(huì)困擾您。另一個(gè)變化是不同的C和C ++配置(稍后會(huì)有更多介紹)。


保持不變的是,您只需要下載并提取MinGW發(fā)行版并將MATLAB指向它。目前還沒(méi)有必要MSYS,Cygwin的或gnumex。唯一棘手的部分是將MATLAB指向它,但這是一個(gè)解決方案。


簡(jiǎn)潔版本


下載并提取MinGW發(fā)行版。選擇一個(gè),例如MinGW-w64(64位)或TDM-GCC(32位和64位選項(xiàng))。

使用該模板作為模板來(lái)定制XML配置文件(詳細(xì)信息請(qǐng)參見下面的長(zhǎng)版)。

設(shè)置MINGWROOT環(huán)境變量。

運(yùn)行mex -setup:[xmlfile] [C|C++]。

長(zhǎng)版


對(duì)于MinGW-w64,我執(zhí)行以下操作進(jìn)行設(shè)置:


從Sourceforge獲取w64的最新版本(或使用安裝程序選擇所需的工具鏈,根據(jù)需要選擇pthread或Win32線程版本)。

提取它,以便您有一個(gè)類似于的編譯器路徑C:\mingw-w64\x86_64-4.9.2-release-posix-seh-rt_v3-rev1\bin\x86_64-w64-mingw32-g++.exe。 如果您打算使用mex命令在MATLAB中進(jìn)行編譯,則不需要MSYS,cygwin或任何其他環(huán)境。檢查PATH環(huán)境變量,以確保g++路徑上沒(méi)有多個(gè)編譯器(),最好沒(méi)有。使用全新的命令提示符進(jìn)行驗(yàn)證。

使用自定義XML配置文件進(jìn)行設(shè)置。在我的GitHub存儲(chǔ)庫(kù)上,我以兩種文件類型發(fā)布了MinGW-w64的C ++配置:mex_C ++ _ mingw-w64.xml和舊版mingw_mexopts.bat。從此作為模板開始,并(可選)使用您下載和提取的MinGW發(fā)行版的描述性名稱和版本來(lái)編輯XML文件。

設(shè)置(或創(chuàng)建)MINGWROOT環(huán)境變量。這就是允許mex命令找到編譯器的原因。您可以在MATLAB中(并且每次 MATLAB以其中的startup.m腳本開頭userpath)都可以執(zhí)行此操作setenv,或者使用Windows屬性對(duì)話框或本機(jī)Windows 7 setx.exe命令僅執(zhí)行一次。

運(yùn)行mex -setup:C:\actual\configFilePath.xml C++。例如,使用.xml文件設(shè)置C ++ MEX文件編譯:


setenv('MINGWROOT','H:\mingw-w64\x86_64-4.9.2-release-posix-seh-rt_v3-rev1')

mex -setup:H:\building\GitHub\MATLAB\MinGW\mex_C++_mingw-w64.xml C++

輸出應(yīng)如下所示:


MEX配置為使用“ MinGW-w64 GCC 4.9.2 posixthreads seh”進(jìn)行C ++語(yǔ)言編譯。


如果需要,以類似的方式使用指定C語(yǔ)言的新XML配置文件設(shè)置C編譯器,即C編譯器前端(例如“ x86_64-w64-mingw32-gcc.exe”,該文件不會(huì)自動(dòng)鏈接C ++標(biāo)準(zhǔn)庫(kù)) ),根據(jù)需要調(diào)整鏈接庫(kù),編譯器標(biāo)志(例如,更改-std=c++11為-std=c99)等。


關(guān)于運(yùn)行時(shí)庫(kù)的靜態(tài)鏈接與動(dòng)態(tài)鏈接的說(shuō)明


像上面這樣用MinGW-w64創(chuàng)建的MEX文件之類的庫(kù),可能取決于一些DLL(在運(yùn)行時(shí)):LIBGCC_S_SEH-1.DLL(用于seh例外發(fā)行版)和LIBSTDC ++-6.DLL,可能還包括libwinpthread-1.dll。如果選擇的是pthreads發(fā)行版而不是Win32線程。如果您不想復(fù)制這些文件,則可以通過(guò)添加以下開關(guān)將運(yùn)行時(shí)庫(kù)靜態(tài)鏈接到MEX文件中:


-static-libgcc -static-libstdc++

XML模板中對(duì)此有一個(gè)注釋。有關(guān)libpthread-1.dll的信息,請(qǐng)參見此處。


對(duì)于TDM-GCC,情況恰恰相反:運(yùn)行時(shí)(包括pthread)是自動(dòng)靜態(tài)鏈接的。若要?jiǎng)討B(tài)鏈接,這將需要DLL,但會(huì)減小MEX文件的大小,您需要:


-shared-libgcc -shared-libstdc++


查看完整回答
反對(duì) 回復(fù) 2019-11-13
  • 3 回答
  • 0 關(guān)注
  • 2081 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)