Cocoapods OpenCV 2.4.10 Linker Error

前端 未结 6 455
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-02-01 17:20

I\'m trying to build a simple project using OpenCV 2.4.10 but I get a bunch of errors like this:

Undefined symbols for architecture x86_64:
  \"_jpeg_free_large\", re         


        
相关标签:
6条回答
  • 2021-02-01 17:44

    Seems to be an issue with the current version of Open CV for iOS

    Bug #4052

    Probably have to keep using 2.4.9.

    0 讨论(0)
  • 2021-02-01 17:46

    I've added the new versions of OpenCV to CocoaPods (2.4.11, 2.4.12, 2.4.12.3, 3.0.0).

    2.4.11, 2.4.12, and 2.4.12.3 need libjpeg to be linked, so now the pod actually downloads the repo, compiles from source, and then links libjpeg in addition to the opencv2.framework file. This works out of the box now through CocoaPods, however it takes a while when doing pod install since it's compiling from source. Just make sure not to cancel it while it's doing that (there's a bug in CocoaPods that causes issues if it's canceled).

    Under the hood, 3.0.0 works just like before with the prebuilt opencv2.framework file and can now be installed just fine through CocoaPods.

    Version 2.4.10 is still broken in CocoaPods, but since that version throws errors while compiling from source on my machine, there's not much I can do.

    (Note: I am not the original maintainer of the pod, I merely contributed these new versions.)

    0 讨论(0)
  • 2021-02-01 17:47

    So here's a little workaround. The problem is because the XCode project is unable to link to the libjpeg.a library. So thats why you get the above errors when you compile the project.

    Follow these steps :

    1. Go to : [[http://sourceforge.net/projects/libjpeg-turbo/files/1.4.0/]] and download the libjpeg-turbo-1.4.0.dmg (3.8 MB) file.
    2. Install the package. Once its done you will find the installed files under this path : /opt/libjpeg-turbo/lib
    3. Open up your terminal and type the following command : lipo -info /opt/libjpeg-turbo/lib/libjpeg.a
    4. If the terminal shows the following the output after running the command then it means, you can use the library for your iOS project(armv7/armv7s)
      • Architectures in the fat file: /opt/libjpeg-turbo/lib/libturbojpeg.a are: i386 x86_64 armv6 armv7 armv7s arm64*
    5. Use finder to navigate to : /opt/libjpeg-turbo/lib and copy libjpeg.a and place it in your project folder.
    6. Head over to your XCode project -> Click on Project Name -> Targets -> General -> Linked frameworks and libraries -> Click on the add button placed at the bottom -> include the libjpeg.a file
    7. Compile the project. It shouldn't show any more libjpeg linker errors.
    0 讨论(0)
  • 2021-02-01 17:53

    I don't have a solution for this one but I have a workaround here.I have downloaded the project from here . And copied the framework and header from this project to my project. enter image description here

    0 讨论(0)
  • 2021-02-01 18:08

    Bug 4052 is still unsolved for 2.4.10 and there is no pod for 2.4.11 so you have to use 2.4.9 which IMO is stable.

    If your using pods

    pod 'OpenCV', '2.4.9'
    
    0 讨论(0)
  • 2021-02-01 18:11

    The same issue I faced with open CV and found a useful link below that resolved my errors of my project :

    http://blog.csdn.net/iOSLearner_Nana/article/details/45174365

    0 讨论(0)
提交回复
热议问题