У меня есть этот Линукс Makefile из публичного кода и теперь я пытаюсь использовать его на Windows, http://pastebin.com/gSqRFUvQПреобразовать MATLAB сделать из Linux версии к версии Windows
Это то, что я до сих пор. http://pastebin.com/iHugE5Z6
Но я получаю ошибку на линии 80.
echo "#include \"../src/gconv.cu\"" > "matlab/mex/gconv.cpp"
"/cygdrive/C/Program Files/Matlab2014b/bin/win64/mex" -lmwblas -largeArrayDims "matlab/mex/gconv.cpp" matlab/src/bits/im2col.obj matlab/src/bits/pooling.obj matlab/src/bits/normalize.obj -o "matlab/mex/gconv.mexw64" 2> >(sed 's/^\(.*\)(\([0-9][0-9]*\)): \([ew].*\)/\1:\2: \3/g' >&2)
Unknown MEX argument '-o'.
Makefile:79: recipe for target 'matlab/mex/gconv.mexw64' failed
make: *** [matlab/mex/gconv.mexw64] Error 127
В основном аргумент -o не существует. Я уверен, что автор хотел по этому параметру. Но я думаю, что он должен быть -output, так как он будет создавать файл .mew64. Если я изменил это на «-output», он получит ошибку в середине.
echo "#include \"../src/gconv.cu\"" > "matlab/mex/gconv.cpp"
"/cygdrive/C/Program Files/Matlab2014b/bin/win64/mex" -lmwblas -largeArrayDims "matlab/mex/gconv.cpp" matlab/src/bits/im2col.obj matlab/src/bits/pooling.obj matlab/src/bits/normalize.obj -output "matlab/mex/gconv.mexw64" 2> >(sed 's/^\(.*\)(\([0-9][0-9]*\)): \([ew].*\)/\1:\2: \3/g' >&2)
Building with 'Microsoft Visual C++ 2012'.
gconv.cpp
c:\cygwin64\home\denny\jaderberg-eccv2014_textspotting-dbe823e3c642\matconvnet\matlab\src\bits/mexutils.h(132) : error C3861: 'snprintf': identifier not found
c:\cygwin64\home\denny\jaderberg-eccv2014_textspotting-dbe823e3c642\matconvnet\matlab\src\bits/mexutils.h(147) : error C3861: 'snprintf': identifier not found
c:\cygwin64\home\denny\jaderberg-eccv2014_textspotting-dbe823e3c642\matconvnet\matlab\mex\../src/gconv.cu(228) : warning C4267: '=' : conversion from 'size_t' to 'int', possible loss of data
c:\cygwin64\home\denny\jaderberg-eccv2014_textspotting-dbe823e3c642\matconvnet\matlab\mex\../src/gconv.cu(381) : warning C4267: 'argument' : conversion from 'size_t' to 'const int', possible loss of data
c:\cygwin64\home\denny\jaderberg-eccv2014_textspotting-dbe823e3c642\matconvnet\matlab\mex\../src/gconv.cu(459) : warning C4267: 'argument' : conversion from 'size_t' to 'const int', possible loss of data
c:\cygwin64\home\denny\jaderberg-eccv2014_textspotting-dbe823e3c642\matconvnet\matlab\mex\../src/gconv.cu(481) : warning C4267: 'argument' : conversion from 'size_t' to 'const int', possible loss of data
Makefile:79: recipe for target 'matlab/mex/gconv.mexw64' failed
make: *** [matlab/mex/gconv.mexw64] Error 127
Нельзя ли использовать это на окнах? Может ли кто-нибудь пролить свет?
Когда вы компилируете код MEX, флаг '-o' не существует, но есть флаг' -O'. '-O' (CAPITAL OH) означает оптимизацию. Посмотрите документацию: http://www.mathworks.com/help/matlab/ref/mex.html. Независимо от того, какой файл C/C++ имеет объявление 'mexFunction', это точка входа, и MEX-файл будет называться после этой функции. Также не требуется флаг '-output'. Посмотрите на различные примеры компиляции. На минимальном уровне все, что вам нужно, это 'mex -O file.c'. Попробуйте заменить все '-o' на' -O' и посмотреть, что произойдет. – rayryeng