(I am new at pretty much everything that I will discuss here… apologies if the question is very basic) – I used Xcode to write some C++ code using OpenCV (dynamic libraries). The algorithm runs smoothly and I created an executable file that also works. However, it only works in my computer.
I understand that I need to use static libraries instead of dynamic libraries. I have done some research and found how to do this here: http://www.shiffman.net/2011/01/23/how-to-build-opencv-static-libraries-mac-os-x/ and here: http://www.randomsequence.com/articles/opencv-snow-leopard/.
I have followed the steps and, although I had to make a couple of changes, I was able to build “.a” files such as “libopencv_highgui.a”.
My code, however, doesn’t work anymore when I replace the libraries. I get 200+ errors. This is one of them:
Undefined symbols for architecture x86_64:
“_gzputs”, referenced from:
__ZL7icvPutsP13CvFileStoragePKc in libopencv_core.a(persistence.o)
I have searched for this question here but this is the closest I could find: Linking OpenCV libraries in Xcode (not exactly the same question).
Thanks everyone!
You need
.afiles from$OPENCV_BUILD_PATH/3rdparty/lib/.The
_gzputsfrom your question belongs tolibzlib.aTo link with OpenCV static libraries you also need to add all OpenCV’s dependencies to you application. The most of these dependencies comes from the opencv_highui module and the list of dependencies is dependent from your build configuration so I can’t tell you the full list. But you can find it yourself: open the
CMakeCache.txtfrom your OpenCV build directory with any text editor and search foropencv_highgui_LIB_DEPENDSline. You need all items from that line except the wordgeneral.