Skip to main content
Kofax

Conflict between Kofax Mobile SDK and OpenCV

Article # 3035466 - Page views: 5

Article # 3035466 - Page views: 5

Issue

Customer is running into a conflict between Kofax (MobileSDK.framework) and OpenCV2.

It seems that the MobileSDK is embedding the OpenCV symbols, below is the error they are having:

duplicate symbol 'cv::Mat::push_back_(void const*)' in:
/MobileSDK/MobileSDK.framework/MobileSDK(matrix.o)
/opencv2/opencv2.framework/opencv2(matrix.o)
duplicate symbol 'cv::TLSDataContainer::gatherData(std::__1::vector<void*, std::__1::allocator<void*> >&) const' in:
/MobileSDK/MobileSDK.framework/MobileSDK(system.o)
/opencv2/opencv2.framework/opencv2(system.o)


They tried removing the duplicate object files, but it seems that the version of opencv that they use is not the same as the one used in MobileSDK, because the symbol is missing:

stderr: undef: __ZN7CvMatNDC1ERKN2cv3MatE
Undefined symbols for architecture x86_64:
"CvMatND::CvMatND(cv::Mat const&)", referenced from:
cv::write(cv::FileStorage&, cv::String const&, cv::Mat const&) in MobileSDK(persistence.o)

Cause

The Kofax Mobile SDK framework implements OpenCV framework internally.

 

Solution

Unfortunately, you can not use your OpenCV version in your projects that are built with our SDK.

 

Level of Complexity 

Low

 

Applies to  

Product Version Build Environment Hardware
Kofax Mobile SDK all      

References

Add any references to other internal or external articles