我正在尝试使用八度音程环境编译基本的c ++ .mex
和.oct
文件。 .mex
文件只是来自matlab的mexcpp.cpp
文件,您可以使用
edit([matlabroot '/extern/examples/mex/mexcpp.cpp']);
.oct
文件是找到[here]的简单c ++示例。(http://www.gnu.org/software/octave/doc/interpreter/Getting-Started-with-Oct_002dFiles.html)
我努力让visual studio编译器设置所有环境变量,如octave wiki using vcvarsall.bat所述。在设置编译器环境变量之前,我可以发出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
?
答案 0 :(得分: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
文件,它们现在可以正常工作了!
编辑:
另一方面,我注意到八度音阶还包括一些不存在的视觉工作室路径的硬编码路径。
-Ic:/Software/VC10Libs/include -Ic:/Software/VC10Libs/include/freetype2 -Ic:/Software/VC10Libs/include -Ic:/Software/VC10Libs/include