Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.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项目中使用编译的ffpmeg库_Android_Linux_Windows_Android Ndk_Ffmpeg - Fatal编程技术网

在不同的Android项目中使用编译的ffpmeg库

在不同的Android项目中使用编译的ffpmeg库,android,linux,windows,android-ndk,ffmpeg,Android,Linux,Windows,Android Ndk,Ffmpeg,我已经编译了ffmpeg库以便在我的Android应用程序中使用,所以现在我有了*.so文件,我想在其他Android项目中使用它们。 但我已经在Linux中编译了它们,现在我将在Windows中工作。我能把这些编译好的文件放到我的Windows项目中吗?把它们链接到mk文件中并使用它吗?32位和64位操作系统之间的差异起作用吗? 谢谢 只要你的目标android平台是相同的,它就应该可以工作 Android NDK编译器生成的.so文件是目标Android平台的本机代码。 它只是完整地打包到A

我已经编译了ffmpeg库以便在我的Android应用程序中使用,所以现在我有了*.so文件,我想在其他Android项目中使用它们。 但我已经在Linux中编译了它们,现在我将在Windows中工作。我能把这些编译好的文件放到我的Windows项目中吗?把它们链接到mk文件中并使用它吗?32位和64位操作系统之间的差异起作用吗?
谢谢

只要你的目标android平台是相同的,它就应该可以工作

Android NDK编译器生成的.so文件是目标Android平台的本机代码。 它只是完整地打包到APK中,因此用于打包APK的操作系统不会影响结果

编辑:

  • 正如一位评论员所说,我所说的目标平台是指像ARM、x86或MIPS这样的CPU架构

  • 至于API级别,targetSdkVersion和minSdkVersion都不会直接影响本机代码

    相反,如果您使用的API级别高于实际Android设备上可用的API级别,则代码可能会在运行时失败

    为了安全地避免这种情况,您需要根据编译.so文件时假定的NDK API级别设置minSdkVersion

    换句话说,在编译本机代码时,NDK编译器应该已经查找了“/platforms/android-/arch-/usr/…”下的文件。确定使用了哪个级别,并确保您的数字等于或大于minSdkVersion

    如果您安装了NDK,它将记录在“/docs/STABLE-api.html”中


  • “在Windows中工作”是什么意思?你的意思是说你正在编写一个Android应用程序,用Windows作为开发机器的操作系统?或者你的意思是你正在构建一个Windows应用程序?我的意思是,Windows是我开发机器的操作系统。早期我在Ubuntu工作,在那里编译ffmpeg LIB,现在我要迁移到Windows谢谢!只有目标SDK?MindK可能不同?MindK可能不同。但可能有不同的Android设备CPU架构:arm v6(armeabi)或arm v7(armeabi-v7a)、Intel Atom(x86)或MIPS。@user1885632在我的回答中添加了有关minSdkVersion的信息。