iOS平台下的OpenCV框架错误

4

我正在尝试为Xcode构建OpenCV框架。我对Mac世界和OpenCV都很陌生。按照这个链接中给出的说明,我克隆了存储库(OpenCV 2.4.7),然后尝试运行Python脚本。

python opencv/platforms/ios/build_framework.py ios

但是我收到了以下错误消息,请有人帮助我吗?我正在使用OSX 10.8.5。

Applications/gebos_third_party_apps/opencv/3rdparty/zlib/gzwrite.c:84:15:

note: did you mean 'fwrite'? got = write(state->fd, strm->next_in, strm->avail_in); ^~~~~ fwrite In file included from /Applications/gebos_third_party_apps/opencv/3rdparty/zlib/gzwrite.c:6: In file included from /Applications/gebos_third_party_apps/opencv/3rdparty/zlib/gzguts.h:21:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk/usr/include/stdio.h:252:9:

note: 'fwrite' declared here size_t fwrite(const void * __restrict, size_t, size_t, FILE * __restrict) __DARWIN_ALIAS(fwrite); ^ /Applications/gebos_third_party_apps/opencv/3rdparty/zlib/gzwrite.c:573:9: error: implicit declaration of function 'close' is invalid in C99 [-Werror,-Wimplicit-function-declaration] if (close(state->fd) == -1) ^ 2 errors generated.

** INSTALL FAILED **

The following build commands failed: CompileC /Applications/gebos_third_party_apps/ios/build/iPhoneSimulator-x86_64/3rdparty/zlib/OpenCV.build/Release-iphonesimulator/zlib.build/Objects-normal/x86_64/gzwrite.o

3rdparty/zlib/gzwrite.c normal x86_64 c com.apple.compilers.llvm.clang.1_0.compiler CompileC /Applications/gebos_third_party_apps/ios/build/iPhoneSimulator-x86_64/3rdparty/zlib/OpenCV.build/Release-iphonesimulator/zlib.build/Objects-normal/x86_64/gzlib.o 3rdparty/zlib/gzlib.c normal x86_64 c com.apple.compilers.llvm.clang.1_0.compiler CompileC /Applications/gebos_third_party_apps/ios/build/iPhoneSimulator-x86_64/3rdparty/zlib/OpenCV.build/Release-iphonesimulator/zlib.build/Objects-normal/x86_64/gzread.o 3rdparty/zlib/gzread.c normal x86_64 c com.apple.compilers.llvm.clang.1_0.compiler (3 failures) Traceback (most recent call last): File "opencv-lib/opencv/platforms/ios/build_framework.py", line 112, in build_framework(os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), "../..")), os.path.abspath(sys.argv[1])) File "opencv-lib/opencv/platforms/ios/build_framework.py", line 104, in build_framework put_framework_together(srcroot, dstroot) File "opencv-lib/opencv/platforms/ios/build_framework.py", line 80, in put_framework_together shutil.copytree(tdir0 + "/install/include/opencv2", dstdir + "/Headers") File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 168, in copytree names = os.listdir(src) OSError: [Errno 2] No such file or directory: '../build/iPhoneOS-arm64/install/include/opencv2'

2个回答

8

不幸的是,解决这个问题的最佳方法(除了直接修复zlib警告之外)是在C_FLAGS中添加-Wno-implicit-function-declaration... 这可以被添加到build_framework.py中的cmakeargs列表中,如下所示:-DCMAKE_C_FLAGS=\"-Wno-implicit-function-declaration\"

cmakeargs = ("-GXcode " +
            "-DCMAKE_BUILD_TYPE=Release " +
            "-DCMAKE_C_FLAGS=\"-Wno-implicit-function-declaration\" " +
            "-DCMAKE_TOOLCHAIN_FILE=%s/platforms/ios/cmake/Toolchains/Toolchain-%s_Xcode.cmake " +
            "-DBUILD_opencv_world=ON " +
            "-DCMAKE_INSTALL_PREFIX=install") % (srcroot, target)

.....


4
我遇到了同样的错误。这里提到的安装说明建议编辑(http://code.opencv.org/issues/3587)对我有用。具体来说,cd到包含build_framework.py的目录,然后使用完全限定的目标目录从那里运行安装。
例如:
cd ~/<my_working_directory>/opencv/platforms/ios/
python build_framework.py ~/<my_working_directory>/ios

另外值得一提的是,在我的测试中,不再需要在根目录下创建Developer符号链接。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接