4

私はオクターブ環境を使用して基本的なC++.mexとファイルをコンパイルしようとしています。.octこの.mexファイルはmexcpp.cpp、MATLABで取得できるmatlabからのファイルです。

edit([matlabroot '/extern/examples/mex/mexcpp.cpp']);

この.octファイルは、[ここ]にある単純なc ++の例です。(http://www.gnu.org/software/octave/doc/interpreter/Getting-Started-with-Oct_002dFiles.html)

vcvarsall.batを使用してオクターブウィキに記載されているように、VisualStudioコンパイラにすべての環境変数をセットアップさせるのに少し苦労しました。コンパイラ環境変数を設定する前は、mkoctfile -v --mex mexcpp.cppエラーなしでコマンドを発行できましたが、ファイルは作成されませんでした。

代わりに、次のように環境(x86を使用)を指定する必要がありました。

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86

今私が抱えている本当の問題は、自分.mex.octファイルをコンパイルすることです。ファイルをコンパイルしようとすると、次のようになります。

cc-msvc -d -c -D_WIN32 -DWIN32 -D__WIN32__  -IC:\Octave-3.6.2\include\octave-3.6.2\octave\.. -IC:\Octave-3.6.2\include\octave-3.6.2\octave -IC:\Octave-3.6.2\include -Ic:/Software/VC10Libs/include -Ic:/Software/VC10Libs/include/freetype2 -Ic:/Software/VC10Libs/include -Ic:/Software/VC10Libs/include   -O2 -MD -EHsc -wd4244 -fp:strict -fp:except-   -I.  mexcpp.cpp -o mexcpp.o
cl -nologo -c -D_WIN32 -DWIN32 -D__WIN32__ -IC:\Octave-3.6.2\include\octave-3.6.2\octave\.. -IC:\Octave-3.6.2\include\octave-3.6.2\octave -IC:\Octave-3.6.2\include -Ic:/Software/VC10Libs/include -Ic:/Software/VC10Libs/include/freetype2 -Ic:/Software/VC10Libs/include -Ic:/Software/VC10Libs/include -O2 -MD -EHsc -wd4244-fp:strict -fp:except- -I. mexcpp.cpp -Fomexcpp.o mexcpp.cpp
C:\Octave-3.6.2\include\math.h(74) : fatal error C1083: Cannot open include file: 'c:/Program Files/Microsoft Visual Studio 10.0/VC/include/math.h': No such file or directory cc-msvc -d -shared  -o mexcpp.mex  mexcpp.o   -Wl,-export:mexFunction -LC:\Octave-3.6.2\lib\octave\3.6.2 -LC:\Octave-3.6.2\lib -loctinterp -loctave -lcruft link -nologo -DLL -out:mexcpp.mex mexcpp.o -LIBPATH:C:\Octave-3.6.2\lib\octave\3.6.2 -LIBPATH:C:\Octave-3.6.2\lib octinterp.lib octave.lib cruft.lib -export:mex Function dirent.lib msvcmath.lib
LINK : fatal error LNK1181: cannot open input file 'mexcpp.o'

Visual C ++ディレクトリがにあるc:/Program Files (x86)/Microsoft Visual Studio 10.0/VCので、なぜそれが検索されているのかわかりませんかc:/Program Files/Microsoft Visual Studio 10.0/VC

4

1 に答える 1

4

問題はOctavesの'math.h'ファイルにあることがわかりました。74行目では、インクルードファイルへのパスがにハードコードされていc:/Program Files/Microsoft Visual Studio 10.0/VC/include/math.hます。に変更するだけで問題は解決しましたc:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/include/math.h.mex.octファイルの両方をコンパイルしてみましたが、動作するようになりました。

編集:

別の注意点として、オクターブには、存在しない一部のVisualStudioパスのハードコードされたパスも含まれていることに気付きました。

-Ic:/Software/VC10Libs/include -Ic:/Software/VC10Libs/include/freetype2 -Ic:/Software/VC10Libs/include -Ic:/Software/VC10Libs/include
于 2012-10-02T20:30:39.070 に答える