1

私はmatlabをよく使用しますが、Cはあまり使用しません(後で説明します)。SharedMatrixというmexファイルをインストールしようとしています。インストールには、Boostのプロセス間ライブラリが必要です。

SharedMatrixをMatlabにインストールするには、次のように入力します。

mex -v -O -win32 -I'C:\Program Files\boost\boost_1_51' SharedMemory.cpp

私が得る正確な出力は次のとおりです。

*************************************************************************** 
  Warning: Neither -compatibleArrayDims nor -largeArrayDims is selected.  
           Using -compatibleArrayDims. In the future, MATLAB will require 
           the use of -largeArrayDims and remove the -compatibleArrayDims  
           option. For more information, see: 
           http://www.mathworks.com/help/techdoc/matlab_external/bsflnue-1.html 
**************************************************************************** 

-> Default options filename found in C:\Users\Skyhr\AppData\Roaming\MathWorks\MATLAB\R2012b 
---------------------------------------------------------------- 
->    Options file           = C:\Users\Skyhr\AppData\Roaming\MathWorks\MATLAB\R2012b\mexopts.bat 
      MATLAB                 = C:\Program Files\MATLAB\R2012b 
->    COMPILER               = lcc 
->    Compiler flags: 
         COMPFLAGS           = -c -I"C:\Program Files\MATLAB\R2012b\sys\lcc\include" -DMATLAB_MEX_FILE -noregistrylookup 
         OPTIMFLAGS          = -DNDEBUG 
         DEBUGFLAGS          = -g4 
         arguments           =  -I"C:\Program Files\boost\boost_1_51" 
         Name switch         = -Fo 
->    Pre-linking commands   =  
->    LINKER                 = lcclnk 
->    Link directives: 
         LINKFLAGS           =  -tmpdir "." -dll "C:\Program Files\MATLAB\R2012b\extern\lib\win32\lcc\mexFunction.def" -L"C:\Program Files\MATLAB\R2012b\sys\lcc\lib" -libpath "C:\Program Files\MATLAB\R2012b\extern\lib\win32\lcc" "C:\Users\Skyhr\AppData\Local\Temp\mex_5NkIuB\templib2.obj" 
         LINKDEBUGFLAGS      =  
         LINKFLAGSPOST       = libmx.lib libmex.lib libmat.lib 
         Name directive      = -o "SharedMemory.mexw32" 
         File link directive =  
         Lib. link directive =  
         Rsp file indicator  = @ 
->    Resource Compiler      = lrc -I"C:\Program Files\MATLAB\R2012b\sys\lcc\include" -noregistrylookup -fo"mexversion.res" 
->    Resource Linker        =  
---------------------------------------------------------------- 


--> lcc  -I"C:\Program Files\boost\boost_1_51" -c -I"C:\Program Files\MATLAB\R2012b\sys\lcc\include" -DMATLAB_MEX_FILE -noregistrylookup -FoC:\Users\Skyhr\AppData\Local\Temp\mex_5NkIuB\SharedMemory.obj -I"C:\Program Files\MATLAB\R2012b\extern\include" -I"C:\Program Files\MATLAB\R2012b\simulink\include" -DNDEBUG -DMX_COMPAT_32 SharedMemory.cpp 

lcc preprocessor error: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp:21 C:\Program Files\boost\boost_1_51\boost\interprocess\mapped_region.hpp:17 .\SharedMemStack.hpp:9 .\SharedMemory.hpp:92 SharedMemory.cpp:62 Could not find include file <cstddef> 
lcc preprocessor error: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp:38 C:\Program Files\boost\boost_1_51\boost\interprocess\mapped_region.hpp:17 .\SharedMemStack.hpp:9 .\SharedMemory.hpp:92 SharedMemory.cpp:62 Could not find include file <utility> 
lcc preprocessor error: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp:39 C:\Program Files\boost\boost_1_51\boost\interprocess\mapped_region.hpp:17 .\SharedMemStack.hpp:9 .\SharedMemory.hpp:92 SharedMemory.cpp:62 Could not find include file <memory> 
lcc preprocessor error: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp:40 C:\Program Files\boost\boost_1_51\boost\interprocess\mapped_region.hpp:17 .\SharedMemStack.hpp:9 .\SharedMemory.hpp:92 SharedMemory.cpp:62 Could not find include file <functional> 
lcc preprocessor error: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp:41 C:\Program Files\boost\boost_1_51\boost\interprocess\mapped_region.hpp:17 .\SharedMemStack.hpp:9 .\SharedMemory.hpp:92 SharedMemory.cpp:62 Could not find include file <iosfwd> 
lcc preprocessor error: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp:42 C:\Program Files\boost\boost_1_51\boost\interprocess\mapped_region.hpp:17 .\SharedMemStack.hpp:9 .\SharedMemory.hpp:92 SharedMemory.cpp:62 Could not find include file <string> 
Error SharedMemory.cpp: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp: 28  syntax error; found `boost' expecting `;' 
Error SharedMemory.cpp: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp: 28  syntax error; found `{' expecting `;' 
Error SharedMemory.cpp: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp: 28  skipping `{' 
Error SharedMemory.cpp: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp: 29  syntax error; found `intrusive' expecting `;' 
Error SharedMemory.cpp: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp: 29  syntax error; found `{' expecting `;' 
Error SharedMemory.cpp: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp: 29  skipping `{' `}' `}' 
Error SharedMemory.cpp: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp: 32  syntax error; found `boost' expecting `;' 
Error SharedMemory.cpp: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp: 32  syntax error; found `{' expecting `;' 
Error SharedMemory.cpp: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp: 32  skipping `{' 
Error SharedMemory.cpp: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp: 33  syntax error; found `interprocess' expecting `;' 
Error SharedMemory.cpp: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp: 33  syntax error; found `{' expecting `;' 
Error SharedMemory.cpp: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp: 33  skipping `{' 
Error SharedMemory.cpp: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp: 34  syntax error; found `bi' expecting `;' 
Error SharedMemory.cpp: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp: 34  initializer must be constant 
Error SharedMemory.cpp: C:\Program Files\boost\boost_1_51\boost\interprocess\interprocess_fwd.hpp: 34  too many errors 

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

お願いします1.エラーを説明してください2.これを修正するにはどうすればよいですか?

4

1 に答える 1

0

お使いのシステムでは、C コンパイラであるlccmexコンパイラを使用するように構成されています。Boost は C++ ライブラリです。そのため、 Boost を使用するプログラムをlccを使用してコンパイルすることはできません。

mex -setupC++ コンパイラを実行して選択します。

他のコンパイラがインストールされていない場合は、最初にインストールする必要があります。Windows では、R2012B は無料のVisual Studio 2010 Express Edition C++ コンパイラをサポートしています。これをダウンロードしてインストールし、mexコマンドを再度実行してみてください ( を実行した後mex -setup)。

于 2013-01-01T10:46:33.410 に答える