我正在嘗試使用八度環境編譯基本的C++ .mex
和.oct
文件。該.mex
文件是從MATLAB只是mexcpp.cpp
文件,你可以在MATLAB使用使用帶有Octave和Visual Studio 2010的mkoctfile編譯.mex或.oct文件編譯器
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
?