Linker-Fehler beim Kompilieren von mex mit mingw-w64

Ich versuche, Mingw-w64 als mex-Compiler in MATLAB 2013a einzurichten. Mein Laptop hat eine x86_64-Architektur und führt Windows 7 aus. Das Programm, das ich kompilieren möchte, verwendet Threading im C ++ 11-Stil. Daher verwende ich mingw-w64 Version 4.9.0 mit Posix-Threads.

Nach Anweisung habe ich gefundenHier undHierIch habe meine Datei mexopts.bat geändert. Der Code scheint erfolgreich zu kompilieren, aber der Linker meldet einen Fehler. Hat jemand Vorschläge, was ich falsch machen könnte?

Übrigens habe ich versucht, den Compiler mit Gnumex einzurichten, aber das hat auch nicht funktioniert.

Hier ist die Ausgabe und Fehlermeldung, die MATLAB ausgibt:

>mex -v Gomoku_mex.cpp
-> Default options filename found in C:\Users\Bas\AppData\Roaming\MathWorks\MATLAB\R2013a 
-> Options file = C:\Users\Bas\AppData\Roaming\MathWorks\MATLAB\R2013a\mexopts.bat
      MATLAB                 = C:\Program Files\MATLAB\R2013a
->    COMPILER               = x86_64-w64-mingw32-g++ 
->    Compiler flags: 
      COMPFLAGS           = -std=c++11 -fexceptions -I"C:\Program Files\MATLAB\R2013a\extern\include" 
      OPTIMFLAGS          = -O3 -fexpensive-optimizations -DNDEBUG 
      DEBUGFLAGS          = -g -Wall -Wextra 
      arguments           =  
      Name switch         = -o 
->    Pre-linking commands=  
->    LINKER              = x86_64-w64-mingw32-g++ 
->    Link directives: 
      LINKFLAGS           =  -shared mex.def -L"C:\Program Files\MATLAB\R2013a\bin\win64" -static-libstdc++ 
      LINKDEBUGFLAGS      =  -g -Wall 
      LINKFLAGSPOST       =  -lmex -lmx -lmat -lmwlapack -lmwblas 
      Name directive      = -o "Gomoku_mex.mexw64" 
      File link directive =  
      Lib. link directive =  
      Rsp file indicator  =  
->    Resource Compiler   =   
->    Resource Linker     =   
---------------------------------------------------------------- 

--> x86_64-w64-mingw32-g++  -std=c++11 -fexceptions -I"C:\Program Files\MATLAB\R2013a\extern\include" -oC:\Users\Bas\AppData\Local\Temp\mex_r7jRw0\Gomoku_mex.obj -I"C:\Program Files\MATLAB\R2013a\extern\include" -I"C:\Program Files\MATLAB\R2013a\simulink\include" -O3 -fexpensive-optimizations -DNDEBUG -DMX_COMPAT_32 Gomoku_mex.cpp 

C:\Users\Bas\AppData\Local\Temp\cc4hwD3A.o:Gomoku_mex.cpp:(.text+0x9d1c): undefined reference to `mxGetPr' 
C:\Users\Bas\AppData\Local\Temp\cc4hwD3A.o:Gomoku_mex.cpp:(.text+0x9d83): undefined reference to `mxCreateDoubleScalar' 
C:/PROGRA~1/mingw-w64/x86_64-4.9.0-posix-seh-rt_v3-rev2/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\Bas\AppData\Local\Temp\cc4hwD3A.o: bad reloc address 0x0 in section `.pdata$_ZNKSt5ctypeIcE8do_widenEc' 
collect2.exe: error: ld returned 1 exit status 

  C:\PROGRA~1\MATLAB\R2013A\BIN\MEX.PL: Error: Compile of 'Gomoku_mex.cpp' failed. 

Error using mex (line 206)
Unable to complete successfully. 

Bearbeiten: Als zusätzliche Information ist dies meine mexopts.bat-Datei. Ich habe dies direkt von einem der beiden obigen Links erhalten und Verzeichnis- und Compilernamen geändert und -std = c ++ 11 hinzugefügt

set MATLAB=%MATLAB%
set PATH=%PATH%;C:\PROGRA~1\mingw-w64\x86_64-4.9.0-posix-seh-rt_v3-rev2\mingw64\bin
set MW_TARGET_ARCH=win64

rem ********************************************************************
rem Compiler parameters
rem ********************************************************************
set COMPILER=x86_64-w64-mingw32-g++
set COMPFLAGS=-std=c++11 -fexceptions -I"%MATLAB%\extern\include" 
set OPTIMFLAGS=-O3 -fexpensive-optimizations -DNDEBUG
set DEBUGFLAGS=-g -Wall -Wextra 
set NAME_OBJECT=-o 

rem ********************************************************************
rem Linker parameters
rem ********************************************************************
set PRELINK_CMDS1=echo EXPORTS > mex.def & echo mexFunction >> mex.def
set LINKER=x86_64-w64-mingw32-g++
set LINKFLAGS= -static-libstdc++ -shared mex.def -L"%MATLAB%\bin\win64" -L"%MATLAB%\extern\lib\win64\microsoft" 
set LINKFLAGSPOST= -lmex -lmx -lmat -lmwlapack -lmwblas 
set LINKOPTIMFLAGS=-O3 
set LINKDEBUGFLAGS= -g -Wall
set LINK_FILE=
set LINK_LIB=
set NAME_OUTPUT=-o "%OUTDIR%%MEX_NAME%%MEX_EXT%"
set RSP_FILE_INDICATOR=
set POSTLINK_CMDS1=del mex.def

Antworten auf die Frage(2)

Ihre Antwort auf die Frage