Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建*.so文件来动态链接Android版OpenCV?_Android_C++_Opencv_Android Ndk_Cmake - Fatal编程技术网

如何创建*.so文件来动态链接Android版OpenCV?

如何创建*.so文件来动态链接Android版OpenCV?,android,c++,opencv,android-ndk,cmake,Android,C++,Opencv,Android Ndk,Cmake,我想从OpenCV 2.4.x源文件生成libopencv_java.so文件,从OpenCV 3.x.x源文件生成libopencv3_java.so文件,以便能够将OpenCV库动态链接到我的Android应用程序 虽然我可以在基于Win64的开发机器上使用“Unix makefiles”在主干上为“armeabi-v7a、arm64-v8a、x86和x86\U 64”目标使用CMake和MinGW从主干重建静态链接的*.a库文件(例如libopencv_core.a和libopencv_i

我想从OpenCV 2.4.x源文件生成libopencv_java.so文件,从OpenCV 3.x.x源文件生成libopencv3_java.so文件,以便能够将OpenCV库动态链接到我的Android应用程序

虽然我可以在基于Win64的开发机器上使用“Unix makefiles”在主干上为“armeabi-v7a、arm64-v8a、x86和x86\U 64”目标使用CMake和MinGW从主干重建静态链接的*.a库文件(例如libopencv_core.a和libopencv_imgproc.a);我无法复制动态链接的libopencv_java和libopencv3_java.so文件,也无法在OpenCV网站或任何其他知识库中找到有关此问题的任何相关信息

有谁能向我解释一下如何在基于Win64的开发机器上通过CMake&MinGW生成这些*.so文件?我想对一些OpenCV源文件进行一些小的更改,然后从头开始复制所有内容

使用“Unix makefiles”或“MinGW makefiles”或任何其他配置并不重要,只要它工作正常


提前感谢那些将来可能会遇到类似问题的人,我解决了这个问题,将新创建的特定体系结构的*.a文件(armeabi-v7a、arm64-v8a、x86、x86_64等)放在OpenCV Android预建库文件夹下的适当位置,并重建“libopencv_java3.so”通过我自己的Android.mk和Application.mk文件在该文件夹下。在“BUILD_opencv_java”和“BUILD_FAT_java_LIB”组件的代码生成阶段,我也只使用了Python 3,而不是同时使用Python 2和Python 3。

为了生成opencv_java,需要在系统中安装python2、java和ant可执行文件。如果我猜对了,你一定是在用cmake生成.a文件。如果您正在使用一些不同的方法,请遵循以下链接中的步骤:
按照上面liink中提到的步骤,您应该能够生成opencv_java文件。

因此,如果我知道您想使用cmake和unix makefiles链接opencv库,对吗?。你可以发布你的cmake脚本和你使用的工具链吗?我想从opencv源代码生成“opencv_java”Android共享库,我从它的GitHub存储库和afaik下载了这些源代码,cmake是生成必要构建文件的唯一选项。我还想使用Unix makefiles,所以是的。该工具链由Android NDK提供。问题是,我在生成的构建脚本中看不到“opencv_java”目标。因此,尽管我可以生成静态库文件(例如libopencv_calib3d.a),但当我为任何目标平台(例如“armeabi-v7a”)生成生成的makefile“make-j4”时,我无法生成libopencv_java3.so共享库文件。您能再详细说明一下吗?我面临的问题与你的问题相同,但我不明白你所说的“OpenCV Android预构建库”是什么意思,以及Android.mk和Application.mk文件应该是什么样子。