2015-01-11 11 views
0

Я пытаюсь скомпилировать CPP файлы из this link, но я получаю следующие ошибки:Ошибка использования MEX (строка 206) Не удалось успешно завершить

>> mex OpticalFlow.cpp 

LINK : error LNK2001: unresolved external symbol mexFunction 
C:\Users\pc\AppData\Local\Temp\mex_Fe1hah\templib.x : 
fatal error LNK1120: 1 unresolved externals  
E:\MATLAB2\R2013A\BIN\MEX.PL: Error: Link of 'OpticalFlow.mexw32' failed. 

>> mex GaussianPyramid.cpp 

LINK : error LNK2001: unresolved external symbol mexFunction 
C:\Users\pc\AppData\Local\Temp\mex_IWT6TB\templib.x : fatal error LNK1120: 1 unresolved externals 
E:\MATLAB2\R2013A\BIN\MEX.PL: Error: Link of 'GaussianPyramid.mexw32' failed. 
Creating library C:\Users\pc\AppData\Local\Temp\mex_5guviT\templib.x and object C:\Users\pc\AppData\Local\Temp\mex_5guviT\templib.exp 
Coarse2FineTwoFrames.obj : error LNK2019: unresolved external symbol "public: static void __cdecl OpticalFlow::Coarse2FineFlow(class Image<double> &,class Image<double> &,class Image<double> &,class Image<double> const &,class Image<double> const &,double,double,int,int,int,int)" ([email protected]@@[email protected]@@[email protected]@Z) referenced in function _mexFunction 
Coarse2FineTwoFrames.mexw32 : fatal error LNK1120: 1 unresolved externals 
E:\MATLAB2\R2013A\BIN\MEX.PL: Error: Link of 'Coarse2FineTwoFrames.mexw32' failed. 
Error using mex (line 206) 
Unable to complete successfully. 

Может кто-нибудь помочь мне, пожалуйста?

+2

Я предполагаю, что вы следовали инструкциям? С сайта: «Как использовать? Ядро пакета написано на C++ и помечено в dll для вызова в Matlab. В папке/OpticalFlow/mex запустите следующее: mex Coarse2FineTwoFrames.cpp GaussianPyramid.cpp OpticalFlow. cpp " –

ответ

1

Пакет, который вы пытаетесь скомпилировать, состоит из трех файлов cpp, но их необходимо скомпилировать в один файл mex.
В результате у них есть только один символ mexFunction, определенный в них.
Попробуйте

>> mex -O -largeArrayDims Coarse2FineTwoFrames.cpp GaussianPyramid.cpp OpticalFlow.cpp 
+0

Действительно, сэр, я прочитал инструкции. Теперь, когда я скомпилирую его в один файл mex. Я испытываю эту ошибку c: \ users \ pc \ desktop \ opticalflow \ mex \ Stochastic.h (11): warning C4067: неожиданные токены после директивы препроцессора - ожидается новая строка c: \ users \ pc \ desktop \ opticalflow \ mex \ NoiseModel.h (6): предупреждение C4005: 'PI': переопределение макросов c: \ users \ pc \ desktop \ opticalflow \ mex \ Stochastic.h (16): см. предыдущее определение 'PI' – Sam

+0

Также , предупреждение предупреждение C4244: '=': преобразование из 'double' в 'int', возможная потеря данных – Sam

+0

@Sam: Это предупреждения, а не ошибки. Мех должен быть скомпилирован успешно. – Daniel