Eclipse 异常Ljava/lang/UnsatifiedLinkError

Eclipse 异常Ljava/lang/UnsatifiedLinkError,eclipse,ubuntu,opencl,unsatisfiedlinkerror,arrayfire,Eclipse,Ubuntu,Opencl,Unsatisfiedlinkerror,Arrayfire,我目前正在尝试在AT&T三星Galaxy S3上构建和运行这个项目。问题是当我尝试运行时:./ndk build-C~/Desktop/ArrayFire/androidcl/jni 然后我尝试在手机上运行它,进入“run->run as->Android应用程序” 我收到了一封“不幸的是,droidcl已经停止工作了。”我是一个相当的noob,但经过几天的研究,我认为这与NDK有关。在LiveFeatureActivity的第19行,“System.loadLibrary(“JNIProces

我目前正在尝试在AT&T三星Galaxy S3上构建和运行这个项目。问题是当我尝试运行时:./ndk build-C~/Desktop/ArrayFire/androidcl/jni

然后我尝试在手机上运行它,进入“run->run as->Android应用程序”

我收到了一封“不幸的是,droidcl已经停止工作了。”我是一个相当的noob,但经过几天的研究,我认为这与NDK有关。在LiveFeatureActivity的第19行,“System.loadLibrary(“JNIProcessor”);”是我最大的怀疑

所有文件都在Git上。帮助将不胜感激,因为我试图运行它3天,但没有任何效果

以下是ndk build所说的:
/ndk build-C~/Desktop/ArrayFire/androidcl/jni
Android NDK:警告:/home/laptop/Desktop/ArrayFire/androidcl/jni/Android.mk:JNIProcessor:链接器标志中的非系统库:/usr/lib/libOpenCL.so
Android NDK:这可能会导致不正确的构建。尝试使用本地\u静态\u库
Android NDK:或本地共享库,以列出
Android-NDK:当前模块
make:进入目录“/home/laptop/Desktop/ArrayFire/androidcl/jni”

[armeabi]Compile++arm:JNIProcessor运行应用程序时收到的
未满足链接错误
,原因很简单,因为您的模块未能生成,因此未包含在应用程序中。让NDK构建链接到
libOpenCL。因此
应该可以解决这个问题

您首先需要获取一个
libOpenCL.so
来链接,您应该能够在目标设备上找到它(如果它不在那里,那么这个应用程序无论如何也不会工作)。在我的设备上,OpenCL库位于
/system/vendor/lib/libOpenCL中。因此
,但您可能需要使用
adb shell
查找它。要将其复制到本地计算机,请运行adb pull/system/vendor/lib/libOpenCL.so


如果您将这个库放在
jni/
目录中,那么您只需要在
LOCAL\u LDLIBS
变量中有
libOpenCL.so
。否则,我通常只需将此库的副本粘贴到NDK平台目录中(例如
$NDK_DIR/platforms/android-17/arch arm/usr/lib/
),然后将
-lOpenCL
添加到
本地\u LDLIBS变量中,所有应用程序都可以使用它。在这两种情况下,您可能会在链接器标志中收到关于非系统库的警告,但这些警告应该可以安全地忽略。

@Cookiez不确定您是通过谷歌搜索还是在阅读了我写的关于此库的博文后偶然发现了此库。如果你不知道这篇文章,请通过这篇文章了解如何让代码在Android设备上运行。如果仍然无法运行应用程序,请告诉我


Pradeep.

您好,谢谢您的澄清!所以我在/usr/lib找到了libOpenCL.So文件。我试着把它复制到网站上,但它不让我这么做。文件是红色的(Ubuntu终端),而其他“常规”库则是青色的。我应该“sudo ldconfig”来创建所需的库吗?@Cookiez你是怎么复制文件的?你是在你自己的机器上还是在手机的文件系统(即通过adb外壳)上找到了
libOpenCL.so
,原来库坏了(因此是红色而不是浅蓝色)。但无论如何,我在自己的机器上找到了libOpenCL.so,而不是通过adb shell。但我也试着在adb外壳中搜索,但仍然没有(运行“find/libOpenCL.so”)并手动检查。您是否验证过您的手机确实支持OpenCL?e、 g.你能从应用商店运行一个OpenCL信息应用程序吗?看看星系S3的规格,我不相信它能。哦,你说得对。S3没有OpenCL支持!我很快就会得到另一台移动设备。我以为马里GPU会支持它,但它只是某些型号。但我已经学会了。再次感谢你的帮助!是的,我已经看过那篇文章了。我就是这样把一切都设置好的:)我终于让应用程序启动并运行起来了!谢谢你们的帮助。