Android上的共享库位置
[这是一个常见的安卓问题,不要查看Gstreamer关键字] 我试图通过Xamarin.Android(在Android上的共享库位置,android,android-studio,xamarin,xamarin.android,gstreamer,Android,Android Studio,Xamarin,Xamarin.android,Gstreamer,[这是一个常见的安卓问题,不要查看Gstreamer关键字] 我试图通过Xamarin.Android(在Visual Studio中)在Android上使用Gstreamer,因此我在Ubuntu上构建了编译的libtutorial-5.so和libgstreamer\u Android.so库,并将它们作为AndroidNativeLibrary添加到Xamarin.Android项目中。当我尝试使用libgstreamer\u android.so使用DllImport时,一切正常,但当我
Visual Studio
中)在Android上使用Gstreamer,因此我在Ubuntu上构建了编译的libtutorial-5.so
和libgstreamer\u Android.so
库,并将它们作为AndroidNativeLibrary
添加到Xamarin.Android项目中。当我尝试使用libgstreamer\u android.so
使用DllImport
时,一切正常,但当我尝试使用libtutorial-5.so
(当然使用DllImport
)时,我得到:
DllImport无法加载库的dlopen失败:无法加载“libtutorial-5.so”所需的库“build/obj/local/armeabi-v7a/libgstreamer_android.so”;由库“build/obj/local/armeabi-v7a/libgstreamer_android.so”导致“未找到”
出现此错误是因为libtutorial-5.so
依赖于libgstreamer\u android.so
libtutorial-5.so
尝试在build/obj/local/armeabi-v7a/libgstreamer\u android.so
位置中查找libgstreamer\u android.so
库
当然,这两个库都位于lib/armeabi-v7a
目录下,即使我替换了所有的两个库,或者只是libgstreamer\u android。所以我想我有两个选择:
- 如何替换real
build/obj/local/armeabi-v7a
目录中的库(因为如果在解决方案资源管理器中使用此位置,则仍然存在此问题)
或
- 我如何更改我的第一个库所依赖的库的路径,该库将位于
Android Studio
中,或者仅位于.mk
文件中(在.so
构建阶段)李>
为什么不将所有必需的库添加到项目中,并将它们标记为AndroidNativeLibrary?它会小心地把它们放在自己的位置上place@Gusman陛下这很奇怪,但我写道我将它们(两个库:哪个依赖,哪个依赖)作为AndroidNativeLibrary的.Whops添加到Xamarin.Android项目中。对不起,我没有读到。。。嗯,你确定他们是正确的abi吗?很奇怪XAndroid没有把它们放在正确的位置上…@Gusman我想是的,因为我可以自主地使用这两个库(以及彼此),但只有当第一个库依赖于Android Studio项目中奇怪位置的第二个库(build/obj/local/armeabi-v7a
)时,才会发生这个错误,但在Xamarin.Android项目中没有。gstreamer,以android示例为例,在vs上复制它,你需要创建一个本机c库(示例也这样做)作为我链接的帖子,然后复制代码(它将是复制/粘贴,它是纯c),并将Java代码添加为c#代码,肯定会有一些失败,您需要配置VS以使用SDK,但这是可行的。为什么不将所有必需的库添加到项目中,并将它们标记为AndroidNativeLibrary?它会小心地把它们放在自己的位置上place@Gusman陛下这很奇怪,但我写道我将它们(两个库:哪个依赖,哪个依赖)作为AndroidNativeLibrary的.Whops添加到Xamarin.Android项目中。对不起,我没有读到。。。嗯,你确定他们是正确的abi吗?很奇怪XAndroid没有把它们放在正确的位置上…@Gusman我想是的,因为我可以自主地使用这两个库(以及彼此),但只有当第一个库依赖于Android Studio项目中奇怪位置的第二个库(build/obj/local/armeabi-v7a
)时,才会发生这个错误,但在Xamarin.Android项目中没有。gstreamer,以android示例为例,在vs上复制它,你需要创建一个本机c库(示例也这样做)作为我链接的帖子,然后复制代码(它将是复制/粘贴,它是纯c),并将Java代码添加为c#代码,肯定会有一些失败,您需要配置VS以使用SDK,但这是可行的。