Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.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
Android应用程序在哪里搜索要加载的共享.so文件?_Android_C++_Cmake_Android Ndk - Fatal编程技术网

Android应用程序在哪里搜索要加载的共享.so文件?

Android应用程序在哪里搜索要加载的共享.so文件?,android,c++,cmake,android-ndk,Android,C++,Cmake,Android Ndk,为了使这更复杂一点,我正在加载一个我用ndk和cmake编译的本机库到Unity中,该库将部署在Android上。在我想将另一个共享库链接到我正在构建的库之前,这一切都很正常。现在我的库无法加载,我相信这是因为它找不到新的共享库。我可以说新的共享库是独立工作的,因为我正在另一个NDK项目中使用它 我看到Unity将新的.so库复制到apps安装目录,并将其与我的原始库一起放在/data/appname/lib/arm64目录中。我还尝试在/system/lib64中安装库,但没有成功。我在没有新

为了使这更复杂一点,我正在加载一个我用ndk和cmake编译的本机库到Unity中,该库将部署在Android上。在我想将另一个共享库链接到我正在构建的库之前,这一切都很正常。现在我的库无法加载,我相信这是因为它找不到新的共享库。我可以说新的共享库是独立工作的,因为我正在另一个NDK项目中使用它

我看到Unity将新的.so库复制到apps安装目录,并将其与我的原始库一起放在/data/appname/lib/arm64目录中。我还尝试在/system/lib64中安装库,但没有成功。我在没有新的共享库的情况下编译了我的库,它可以工作,然后只修改了cmake以将其添加回,我的库将不再加载。我还对它进行了objdump,以确保它是x64,并导出了符号,以防它被损坏。所以我想知道,有没有办法找出我的库文件在哪里

这就是我如何在CmakeList.txt中包含新的共享库的方法

add_library(libusb SHARED IMPORTED)
set_target_properties(libusb PROPERTIES IMPORTED_LOCATION D:/projects/arm64-v8a/libusb1.0.so) 
其中D:\projects\arm64-v8a是库文件在我的生成计算机上的位置。我不知道这是不是把事情搞砸了。但我在我的Android studio Cmake项目中使用了相同的语法,我可以访问该库,但我确信这在某种程度上是不同的。任何帮助都会得到感激


谢谢

它将在应用程序的lib/[platform abi]目录中查找。但是有一个使用预构建库的步骤列表:
您检查过这些吗?

导入的库可能有自己的依赖项,也必须复制到您的APK(或AAR)中,运行
objdump-p libusb1.so | findstr“NEEDED”

并不是因为我使用的是Cmake。可能有几个陷阱。首先,导入的库可能有自己的依赖项,这些依赖项也必须复制到APK(或AAR)中,运行objdump-p libusb1.so | findstr“NEEDED”。其次,导入的库可能与设备的API级别不匹配。你写你在另一个项目中使用它。这个项目是否在同一台设备上运行?应该有一个系统日志,其中有关于未能加载库的错误,它可能会有用。Alex这是正确的答案,我昨晚很晚才找到它。其中一个图书馆确实有自己需要的。所以!