我有一个使用c库的Android应用程序,并为x86,armeabi和armeabi-v7a架构编译。
我最近注意到这一点,似乎有些手机会在一个国家/地区运行,但德国,韩国,意大利和澳大利亚的应用用户似乎都有不满意的错误,特别是在使用opencv时..
我已经通过
包含了opencv的使用static {
System.loadLibrary("somecompiledlibname");
}
异常java.lang.UnsatisfiedLinkError:找不到本机方法:org.opencv.core.Mat.n_Mat :()
所以我的问题是:
1)不同国家的架构是否有所不同?
2)我该如何解决这个问题?
答案 0 :(得分:1)
没有。手机之间的架构不同。给定的CPU在世界各地使用相同的架构。 x86将是英特尔(或AMD)PC处理器,有时用于平板电脑,但很少。 ARM是一种完全不同类型的芯片,几乎被世界上所有移动设备使用。 ARMv7是ARM的更现代版本,但不适用于较旧的CPU。你最好支持所有这些,尽管现在几乎所有的东西都是ARMv7。
答案 1 :(得分:0)
您可以在OpenCV初始化之后调用任何OpenCV对象和函数,包括对象构造函数。当正确初始化OpenCV onManagerConnected(LoaderCallbackInterface.SUCCESS)被调用。
尝试与此处相同:
static {
if (!OpenCVLoader.initDebug()) {
//..
}
}