2015-01-28 3 views
0

У меня есть этот Линукс 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 

Нельзя ли использовать это на окнах? Может ли кто-нибудь пролить свет?

+0

Когда вы компилируете код 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

ответ

0

Теперь вы можете использовать те же сети в новых версиях MatConvNet, поскольку добавлена ​​поддержка Windows (хотя в некоторых конфигурациях все еще есть некоторые сбои ...). Также исправлены ошибки, о которых вы сообщаете здесь (в то время код не был исправлен для компилятора MSC).

Смежные вопросы