使用 mkoctfile 与 Octave 和 Visual Studio 2010 编译器编译 .mex 或 .oct



我正在尝试编译一个基本的c ++.mex并使用八度环境.oct文件。.mex文件只是来自 matlab mexcpp.cpp文件,您可以使用

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

.oct文件是 [此处] 找到的简单 c++ 示例。(http://www.gnu.org/software/octave/doc/interpreter/Getting-Started-with-Oct_002dFiles.html)

我努力让Visual Studio编译器使用vcvarsall.bat设置octave wiki上记录的所有环境变量。在设置编译器环境变量之前,我可以发出 mkoctfile -v --mex mexcpp.cpp 命令而不会出现任何错误,但没有创建任何文件。

相反,我必须像这样指定环境(我使用了x86):

"C:Program Files (x86)Microsoft Visual Studio 10.0VCvcvarsall.bat" x86

现在我遇到的真正问题是编译我的.mex.oct文件。当我尝试编译文件时,我得到:

cc-msvc -d -c -D_WIN32 -DWIN32 -D__WIN32__  -IC:Octave-3.6.2includeoctave-3.6.2octave.. -IC:Octave-3.6.2includeoctave-3.6.2octave -IC:Octave-3.6.2include -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.2includeoctave-3.6.2octave.. -IC:Octave-3.6.2includeoctave-3.6.2octave -IC:Octave-3.6.2include -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.2includemath.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.2liboctave3.6.2 -LC:Octave-3.6.2lib -loctinterp -loctave -lcruft link -nologo -DLL -out:mexcpp.mex mexcpp.o -LIBPATH:C:Octave-3.6.2liboctave3.6.2 -LIBPATH:C:Octave-3.6.2lib octinterp.lib octave.lib cruft.lib -export:mex Function dirent.lib msvcmath.lib
LINK : fatal error LNK1181: cannot open input file 'mexcpp.o'

我的视觉C++目录位于c:/Program Files (x86)/Microsoft Visual Studio 10.0/VC,所以我不确定为什么它会在c:/Program Files/Microsoft Visual Studio 10.0/VC中查找?

我发现问题出在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

最新更新