Компиляция файлов .mex или .oct с использованием mkoctfile с помощью Octave и компилятора Visual Studio 2010

Я пытаюсь скомпилировать базовый с ++ .mex а также .oct файл с использованием октавной среды. .mex файл просто mexcpp.cpp файл из Matlab, который вы можете получить в MATLAB, используя

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

.oct file — простой пример c ++, найденный [здесь]. (http://www.gnu.org/software/octave/doc/interpreter/Getting-Started-with-Oct_002dFiles.html)

Я немного боролся с тем, чтобы компилятор Visual Studio настраивал все переменные среды, как описано в октава вики с помощью 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?

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
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]