Error using mex complier

8 visualizaciones (últimos 30 días)
Jaimeet Patel
Jaimeet Patel el 15 de Ag. de 2019
Respondida: Geoff Hayes el 19 de Ag. de 2019
Unable to compile C++ code. I am using the following command to complie a .cpp file, but it throws an error.
mex generateEllipseCandidates.cpp -IC:\opencv\build\include -IC:\opencv\build\include\opencv -IC:\opencv\build\include\opencv2 -IC:\opencv\build\x64\vc11\lib -Lopencv_core249 -Lopencv_highgui249 -Lopencv_imgproc249 -Llibmwlapack.lib -IC:\Users\jaimeetp\Documents\MATLAB\R2019a\extern\include -IC:\Users\jaimeetp\Documents\MATLAB\R2019a\extern\lib\win64\microsoft
Error:
mex generateEllipseCandidates.cpp -IC:\opencv\build\include -IC:\opencv\build\include\opencv -IC:\opencv\build\include\opencv2 -IC:\opencv\build\x64\vc11\lib -Lopencv_core249 -Lopencv_highgui249 -Lopencv_imgproc249 -Llibmwlapack.lib -IC:\Users\jaimeetp\Documents\MATLAB\R2019a\extern\include -IC:\Users\jaimeetp\Documents\MATLAB\R2019a\extern\lib\win64\microsoft
Building with 'Microsoft Visual C++ 2019'.
Error using mex
Creating library generateEllipseCandidates.lib and object generateEllipseCandidates.exp
generateEllipseCandidates.obj : error LNK2019: unresolved external symbol dggev referenced in function "int __cdecl fitEllipse2(double *,double *)"
(?fitEllipse2@@YAHPEAN0@Z)
generateEllipseCandidates.obj : error LNK2019: unresolved external symbol "public: __cdecl cv::Exception::Exception(int,class std::basic_string<char,struct
std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class
std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int)"
(??0Exception@cv@@QEAA@HAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@00H@Z) referenced in function "void __cdecl cvCanny3(void const *,void
*,void *,void *,int)" (?cvCanny3@@YAXPEBXPEAX11H@Z)
generateEllipseCandidates.obj : error LNK2019: unresolved external symbol "public: virtual __cdecl cv::Exception::~Exception(void)" (??1Exception@cv@@UEAA@XZ)
referenced in function "void __cdecl cvCanny3(void const *,void *,void *,void *,int)" (?cvCanny3@@YAXPEBXPEAX11H@Z)
generateEllipseCandidates.obj : error LNK2019: unresolved external symbol "void __cdecl cv::error(class cv::Exception const &)" (?error@cv@@YAXAEBVException@1@@Z)
referenced in function "void __cdecl cvCanny3(void const *,void *,void *,void *,int)" (?cvCanny3@@YAXPEBXPEAX11H@Z)
generateEllipseCandidates.obj : error LNK2019: unresolved external symbol "void __cdecl cv::fastFree(void *)" (?fastFree@cv@@YAXPEAX@Z) referenced in function
"public: __cdecl cv::Mat::~Mat(void)" (??1Mat@cv@@QEAA@XZ)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual class cv::Mat __cdecl cv::_InputArray::getMat(int)const "
(?getMat@_InputArray@cv@@UEBA?AVMat@2@H@Z)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl cv::_InputArray::getMatVector(class std::vector<class
cv::Mat,class std::allocator<class cv::Mat> > &)const " (?getMatVector@_InputArray@cv@@UEBAXAEAV?$vector@VMat@cv@@V?$allocator@VMat@cv@@@std@@@std@@@Z)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual class cv::GlBuffer __cdecl cv::_InputArray::getGlBuffer(void)const "
(?getGlBuffer@_InputArray@cv@@UEBA?AVGlBuffer@2@XZ)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual class cv::GlTexture __cdecl cv::_InputArray::getGlTexture(void)const "
(?getGlTexture@_InputArray@cv@@UEBA?AVGlTexture@2@XZ)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual class cv::gpu::GpuMat __cdecl cv::_InputArray::getGpuMat(void)const "
(?getGpuMat@_InputArray@cv@@UEBA?AVGpuMat@gpu@2@XZ)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual int __cdecl cv::_InputArray::kind(void)const "
(?kind@_InputArray@cv@@UEBAHXZ)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual class cv::Size_<int> __cdecl cv::_InputArray::size(int)const "
(?size@_InputArray@cv@@UEBA?AV?$Size_@H@2@H@Z)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual unsigned __int64 __cdecl cv::_InputArray::total(int)const "
(?total@_InputArray@cv@@UEBA_KH@Z)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual int __cdecl cv::_InputArray::type(int)const "
(?type@_InputArray@cv@@UEBAHH@Z)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual int __cdecl cv::_InputArray::depth(int)const "
(?depth@_InputArray@cv@@UEBAHH@Z)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual int __cdecl cv::_InputArray::channels(int)const "
(?channels@_InputArray@cv@@UEBAHH@Z)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl cv::_InputArray::empty(void)const "
(?empty@_InputArray@cv@@UEBA_NXZ)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl cv::_OutputArray::fixedSize(void)const "
(?fixedSize@_OutputArray@cv@@UEBA_NXZ)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl cv::_OutputArray::fixedType(void)const "
(?fixedType@_OutputArray@cv@@UEBA_NXZ)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl cv::_OutputArray::needed(void)const "
(?needed@_OutputArray@cv@@UEBA_NXZ)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual class cv::Mat & __cdecl cv::_OutputArray::getMatRef(int)const "
(?getMatRef@_OutputArray@cv@@UEBAAEAVMat@2@H@Z)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl cv::_OutputArray::create(class
cv::Size_<int>,int,int,bool,int)const " (?create@_OutputArray@cv@@UEBAXV?$Size_@H@2@HH_NH@Z)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl cv::_OutputArray::create(int,int,int,int,bool,int)const "
(?create@_OutputArray@cv@@UEBAXHHHH_NH@Z)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl cv::_OutputArray::create(int,int const
*,int,int,bool,int)const " (?create@_OutputArray@cv@@UEBAXHPEBHHH_NH@Z)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl cv::_OutputArray::release(void)const "
(?release@_OutputArray@cv@@UEBAXXZ)
generateEllipseCandidates.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl cv::_OutputArray::clear(void)const "
(?clear@_OutputArray@cv@@UEBAXXZ)
generateEllipseCandidates.obj : error LNK2019: unresolved external symbol "public: class cv::Mat & __cdecl cv::Mat::operator=(class cv::Scalar_<double> const &)"
(??4Mat@cv@@QEAAAEAV01@AEBV?$Scalar_@N@1@@Z) referenced in function "public: __cdecl cv::Mat_<float>::Mat_<float>(int,int,float const &)"
(??0?$Mat_@M@cv@@QEAA@HHAEBM@Z)
generateEllipseCandidates.obj : error LNK2019: unresolved external symbol "public: static class cv::MatExpr __cdecl cv::Mat::zeros(int,int,int)"
(?zeros@Mat@cv@@SA?AVMatExpr@2@HHH@Z) referenced in function "void __cdecl calculateGradient3(double *,unsigned int,unsigned int,struct image_double_s * *)"
(?calculateGradient3@@YAXPEANIIPEAPEAUimage_double_s@@@Z)
generateEllipseCandidates.obj : error LNK2019: unresolved external symbol "public: void __cdecl cv::Mat::create(int,int const *,int)"
(?create@Mat@cv@@QEAAXHPEBHH@Z) referenced in function "public: __cdecl cv::Mat_<float>::Mat_<float>(int,int,float const &)" (??0?$Mat_@M@cv@@QEAA@HHAEBM@Z)
generateEllipseCandidates.obj : error LNK2019: unresolved external symbol "public: void __cdecl cv::Mat::deallocate(void)" (?deallocate@Mat@cv@@QEAAXXZ) referenced
in function "public: __cdecl cv::Mat::~Mat(void)" (??1Mat@cv@@QEAA@XZ)
generateEllipseCandidates.obj : error LNK2019: unresolved external symbol "public: void __cdecl cv::Mat::copySize(class cv::Mat const &)"
(?copySize@Mat@cv@@QEAAXAEBV12@@Z) referenced in function "public: __cdecl cv::Mat::Mat(class cv::Mat const &)" (??0Mat@cv@@QEAA@AEBV01@@Z)
generateEllipseCandidates.obj : error LNK2019: unresolved external symbol "void __cdecl cv::line(class cv::Mat &,class cv::Point_<int>,class cv::Point_<int>,class
cv::Scalar_<double> const &,int,int,int)" (?line@cv@@YAXAEAVMat@1@V?$Point_@H@1@1AEBV?$Scalar_@N@1@HHH@Z) referenced in function mexFunction
generateEllipseCandidates.obj : error LNK2019: unresolved external symbol "void __cdecl cv::ellipse(class cv::Mat &,class cv::Point_<int>,class
cv::Size_<int>,double,double,double,class cv::Scalar_<double> const &,int,int,int)"
(?ellipse@cv@@YAXAEAVMat@1@V?$Point_@H@1@V?$Size_@H@1@NNNAEBV?$Scalar_@N@1@HHH@Z) referenced in function mexFunction
generateEllipseCandidates.obj : error LNK2019: unresolved external symbol "int __cdecl cv::_interlockedExchangeAdd(int *,int)"
(?_interlockedExchangeAdd@cv@@YAHPEAHH@Z) referenced in function "public: __cdecl cv::Mat::Mat(class cv::Mat const &)" (??0Mat@cv@@QEAA@AEBV01@@Z)
generateEllipseCandidates.obj : error LNK2019: unresolved external symbol cvGetMat referenced in function "void __cdecl cvCanny3(void const *,void *,void *,void
*,int)" (?cvCanny3@@YAXPEBXPEAX11H@Z)
generateEllipseCandidates.obj : error LNK2019: unresolved external symbol cvSobel referenced in function "void __cdecl cvCanny3(void const *,void *,void *,void
*,int)" (?cvCanny3@@YAXPEBXPEAX11H@Z)
generateEllipseCandidates.mexw64 : fatal error LNK1120: 36 unresolved externals
  2 comentarios
Geoff Hayes
Geoff Hayes el 16 de Ag. de 2019
Jaimeet - could you clarify the following (from your call to mex)
-IC:\opencv\build\x64\vc11\lib -Lopencv_core249 -Lopencv_highgui249 -Lopencv_imgproc249 -Llibmwlapack.lib
It seems that you are using the
-I
to indicate where the libraries should be found. Unless MATLAB does things differently, this is used only to add the include directory of header files. You should be using
-L
for libraries. And when indicating which libraries to link to, you use the lower case
-l
(and probably need to include "lib" as well). So the above might become
-LC:\opencv\build\x64\vc11\lib -llibopencv_core249 -llibopencv_highgui249 -llibopencv_imgproc249 -llibmwlapack
See mex for some examples.
Jaimeet Patel
Jaimeet Patel el 16 de Ag. de 2019
Thank you. It worked for me. Thank you for your suggestion.

Iniciar sesión para comentar.

Respuestas (1)

Geoff Hayes
Geoff Hayes el 19 de Ag. de 2019
Jaimeet - it seems that you are using the
-I
to indicate where the libraries should be found. Unless MATLAB does things differently, this is used only to add the include directory of header files. You should be using
-L
for libraries. And when indicating which libraries to link to, you use the lower case
-l
(and probably need to include "lib" as well). So the above might become
-LC:\opencv\build\x64\vc11\lib -llibopencv_core249 -llibopencv_highgui249 -llibopencv_imgproc249 -llibmwlapack
See mex for some examples.

Categorías

Más información sobre Write C Functions Callable from MATLAB (MEX Files) en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by