gpt4 book ai didi

c++ - 使用带有 Octave 和 Visual Studio 2010 编译器的 mkoctfile 编译 .mex 或 .oct 文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:44 27 4
gpt4 key购买 nike

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

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 编译器设置所有环境变量,如 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?

最佳答案

我发现问题出在 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 文件,它们现在可以工作了!

编辑:

另一方面,我注意到 Octave 还包括一些不存在的 Visual Studio 路径的硬编码路径。

-Ic:/Software/VC10Libs/include -Ic:/Software/VC10Libs/include/freetype2 -Ic:/Software/VC10Libs/include -Ic:/Software/VC10Libs/include

关于c++ - 使用带有 Octave 和 Visual Studio 2010 编译器的 mkoctfile 编译 .mex 或 .oct 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12697748/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com