1

我想使用 MEX 在 MATLAB 上编译 C\C++ 文件。mex -setup那我先试了mex xyz.cpp。但我仍然收到错误

E:\MATLAB~1\BIN\MEX.PL:错误:“xyz.cpp”编译失败。

键入此命令时

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

我得到以下输出

这是墨西哥,版权所有 1984-2007 The MathWorks, Inc.

-> 在 C:\Users\abc\AppData\Roaming\MathWorks\MATLAB\R2008b 中找到的默认选项文件名 --------------------------- -------------------------------------
-> 选项文件 = C:\Users\abc\AppData \Roaming\MathWorks\MATLAB\R2008b\mexopts.bat
MATLAB = E:\MATLAB~1
-> 编译器 = lcc
-> 编译器标志:
COMPFLAGS = -c -Zp8 -I"E:\MATLAB~1\sys\lcc\包括” -DMATLAB_MEX_FILE -noregistrylookup
OPTIMFLAGS = -DNDEBUG
DEBUGFLAGS = -g4
参数 =
名称开关 = -Fo
-> 预链接命令 =
-> LINKER = lcclnk
-> 链接指令:
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
名称指令 = -o "mexDiscreteFlow.mexw32 "
文件链接指令 =
Lib. 链接指令 =
Rsp 文件指示符 = @
-> 资源编译器 = lrc -I"E:\MATLAB~1\sys\lcc\include" -noregistrylookup -fo"mexversion.res"
-> 资源链接器 =
-------------------------------------------------- --------------

--> 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 预处理器错误: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 找不到包含文件
错误 C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\ USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 7 语法错误;找到<' expecting;'
错误 C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 7 跳过T' 期待>'期待>' 错误 C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 8 语法错误;找到)'<'
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
;'
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
;'
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 7 skipping

*' expecting
错误 C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 8 跳过*'pBuffer'
错误 C: \USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 10 undeclared identifier delete' 错误 C:\USERS \abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 11 非法表达式 错误 C:\USERS\abc\DOWNLO ~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 11 语法错误;发现]'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


pBuffer' expecting
错误 C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 11 类型错误:指针预期
警告C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 11 语句无效
错误 C: \USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 11 语法错误;找到pBuffer' expecting;'
警告 C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 11 语句无效
警告 C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 11 定义前删除的可能用法
错误 C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 15 语法错误;找到<' expecting;'
错误 C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 15 跳过T' 期待>'期待>' 错误 C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 16 语法错误;找到)'<'
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
;'
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
;'
Error C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 15 skipping

*' expecting
错误 C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\mexDiscreteFlow.cpp: C:\USERS\abc\DOWNLO~1\RELEASE\RELEASE\MEX\project.h: 16 错误太多

E:\MATLAB~1\BIN\MEX.PL:错误:“mexDiscreteFlow.cpp”编译失败。

???在 213 处使用 ==> mex 时出错,
无法成功完成。

谁能提供一些建议?

谢谢

4

1 回答 1

4

lcc 是Matlab 附带的C编译器,但您正在尝试编译C++文件。您需要再次运行 mex -setup 并选择一个 C++ 编译器(但首先要获得一个 C++ 编译器,如果您还没有的话)

于 2013-04-30T01:16:44.130 回答