2012-07-10 81 views
1

我想使用MEX在MATLAB上編譯C \ C++文件。我先試着mex -setup然後mex xyz.cpp。但我仍然得到錯誤使用MEX編譯C++文件

E:\MATLAB~1\BIN\MEX.PL: Error: Compile of 'xyz.cpp' failed.

當鍵入此命令

mex -v mexDiscreteFlow.cpp BPFlow.cpp Stochastic.cpp 

我得到以下輸出

This is mex, Copyright 1984-2007 The MathWorks, Inc.

-> Default options filename found in C:\Users\abc\AppData\Roaming\MathWorks\MATLAB\R2008b ----------------------------------------------------------------
-> Options file = C:\Users\abc\AppData\Roaming\MathWorks\MATLAB\R2008b\mexopts.bat
MATLAB = E:\MATLAB~1
-> COMPILER = lcc
-> Compiler flags:
COMPFLAGS = -c -Zp8 -I"E:\MATLAB~1\sys\lcc\include" -DMATLAB_MEX_FILE -noregistrylookup
OPTIMFLAGS = -DNDEBUG
DEBUGFLAGS = -g4
arguments =
Name switch = -Fo
-> Pre-linking commands =
-> LINKER = lcclnk
-> Link directives:
LINKFLAGS = -tmpdir "." -dll "E:\MATLAB~1\extern\lib\win32\lcc\mexFunction.def" -L"E:\MATLAB~1\sys\lcc\lib" -libpath "E:\MATLAB~1\extern\lib\win32\lcc" "C:\USERS\abc\APPDATA\LOCAL\TEMP\MEX_JT~1\templib2.obj"
LINKDEBUGFLAGS =
LINKFLAGSPOST = libmx.lib libmex.lib libmat.lib
Name directive = -o "mexDiscreteFlow.mexw32"
File link directive =
Lib. link directive =
Rsp file indicator = @
-> Resource Compiler = lrc -I"E:\MATLAB~1\sys\lcc\include" -noregistrylookup -fo"mexversion.res"
-> Resource Linker =
----------------------------------------------------------------

--> lcc -c -Zp8 -I"E:\MATLAB~1\sys\lcc\include" -DMATLAB_MEX_FILE -noregistrylookup -FoC:\USERS\abc\APPDATA\LOCAL\TEMP\MEX_JT~1\mexDiscreteFlow.obj -IE:\MATLAB~1\extern\include -IE:\MATLAB~1\simulink\include -DNDEBUG -DMX_COMPAT_32 C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp

lcc preprocessor error: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\ImageProcessing.h:7 C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\Image.h:7 C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp:3 Could not find include file
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 7 syntax error; found <' expecting ;'
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 7 skipping <'
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 7 syntax error; found
T' expecting ;'
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 7 syntax error; found
>' expecting ;'
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 7 skipping
>'
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 8 syntax error; found *' expecting)'
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 8 skipping *' pBuffer'
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 10 undeclared identifier pBuffer'
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 11 undeclared identifier
delete'
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 11 illegal expression
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 11 syntax error; found pBuffer' expecting ]'
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 11 type error: pointer expected
Warning C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 11 Statement has no effect
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 11 syntax error; found pBuffer' expecting ;'
Warning C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 11 Statement has no effect
Warning C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 11 possible usage of delete before definition
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 15 syntax error; found <' expecting ;'
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 15 skipping <'
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 15 syntax error; found
T' expecting ;'
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 15 syntax error; found
>' expecting ;'
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 15 skipping
>'
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 16 syntax error; found *' expecting)'
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 16 too many errors

E:\MATLAB~1\BIN\MEX.PL: Error: Compile of 'mexDiscreteFlow.cpp' failed.

??? Error using ==> mex at 213
Unable to complete successfully.

任何人都可以提供一些建議嗎?

感謝

+0

嘗試編譯而不運行Matlab中的C++編譯器。這應該可以幫助你隔離問題。 – 2012-07-10 11:06:01

+0

我想你運行'mex -setup'而不是mex-setup,對不對? – Drodbar 2012-07-10 11:07:39

+0

@drodbar:是的,我會編輯它。 – user671805 2012-07-10 12:04:56

回答

4

LCC是Ç編譯器附帶Matlab的,但你嘗試編譯C++文件。 你需要再次運行mex -setup並選擇一個C++編譯器(但是如果你還沒有編譯器,首先得到一個C++編譯器)

+1

最好在Windows平臺上使用visual studio的編譯器。 – Shai 2013-04-30 05:40:04