Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.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
共享库与androidndk_Android_Android Ndk_Shared Libraries - Fatal编程技术网

共享库与androidndk

共享库与androidndk,android,android-ndk,shared-libraries,Android,Android Ndk,Shared Libraries,我最近开始使用Android NDK,我在共享库方面遇到了一些问题。 我用Eclipse创建了一个项目,它允许我使用NDK和natives函数。但现在,我想使用我与QtCreator创建的另一个共享库。 这是我的问题。即使我没有调用NDK build来创建共享库,也可以将其包含到我的NDK项目中吗? 让我们举个例子。如果我创建这样一个简单的共享库: g++ -Wall -shared -fPIC -o libapi.so MyDLL.cpp 我可以在我的NDK项目上使用它吗,比如(Androi

我最近开始使用Android NDK,我在共享库方面遇到了一些问题。
我用Eclipse创建了一个项目,它允许我使用NDK和natives函数。但现在,我想使用我与QtCreator创建的另一个共享库。

这是我的问题。即使我没有调用NDK build来创建共享库,也可以将其包含到我的NDK项目中吗?

让我们举个例子。如果我创建这样一个简单的共享库:

g++ -Wall -shared -fPIC -o libapi.so MyDLL.cpp
我可以在我的NDK项目上使用它吗,比如(Android.mk):

当然,我可以在我的本地NDK端使用它的功能吗?

使用此方法,我在尝试构建Eclipse项目时会遇到以下错误:

/libs/armeabi-v7a/libapi.so: File format not recognized
我认为我的共享库与ndk构建不兼容(对还是错?。


谢谢您的回答。

您是如何构建共享库的?它是为arm编译的,带有NDK吗?
如果没有,它将无法工作。

您是如何构建共享库的?它是为arm编译的,带有NDK吗?
如果没有,它将无法工作。

您是如何构建共享库的?它是为arm编译的,带有NDK吗?
如果没有,它将无法工作。

您是如何构建共享库的?它是为arm编译的,带有NDK吗?
如果没有,它就无法工作。

评论中的人表示,您几乎肯定是为x86而不是arm编译的。(您说您正在将cygwin与Windows一起使用,默认情况下将编译为x86,除非您的Windows框是arm框,我猜情况并非如此。)

Android ndk中有一个名为make-standalone-toolchain.sh的脚本。如果您位于安装ndk的当前目录中,则可以通过键入以下内容来使用:

./android-ndk-r9/build/tools/make-standalone-toolchain.sh --platform=<your desired android platform> --install-dir=<location where you want android toolchain>
file libapi.so
将这些工具放在您的路径中,并使用它们来构建您的库

我不知道cygwin是否包含“file”命令,但您可以通过键入以下内容来确定共享库的体系结构:

./android-ndk-r9/build/tools/make-standalone-toolchain.sh --platform=<your desired android platform> --install-dir=<location where you want android toolchain>
file libapi.so

如果它说是手臂,你就很好。如果上面写的是x86,那么它将无法工作(除了x86安卓设备)。

评论中的人表示,您几乎肯定是为x86而不是arm编译的。(您说您正在将cygwin与Windows一起使用,默认情况下将编译为x86,除非您的Windows框是arm框,我猜情况并非如此。)

Android ndk中有一个名为make-standalone-toolchain.sh的脚本。如果您位于安装ndk的当前目录中,则可以通过键入以下内容来使用:

./android-ndk-r9/build/tools/make-standalone-toolchain.sh --platform=<your desired android platform> --install-dir=<location where you want android toolchain>
file libapi.so
将这些工具放在您的路径中,并使用它们来构建您的库

我不知道cygwin是否包含“file”命令,但您可以通过键入以下内容来确定共享库的体系结构:

./android-ndk-r9/build/tools/make-standalone-toolchain.sh --platform=<your desired android platform> --install-dir=<location where you want android toolchain>
file libapi.so

如果它说是手臂,你就很好。如果上面写的是x86,那么它将无法工作(除了x86安卓设备)。

评论中的人表示,您几乎肯定是为x86而不是arm编译的。(您说您正在将cygwin与Windows一起使用,默认情况下将编译为x86,除非您的Windows框是arm框,我猜情况并非如此。)

Android ndk中有一个名为make-standalone-toolchain.sh的脚本。如果您位于安装ndk的当前目录中,则可以通过键入以下内容来使用:

./android-ndk-r9/build/tools/make-standalone-toolchain.sh --platform=<your desired android platform> --install-dir=<location where you want android toolchain>
file libapi.so
将这些工具放在您的路径中,并使用它们来构建您的库

我不知道cygwin是否包含“file”命令,但您可以通过键入以下内容来确定共享库的体系结构:

./android-ndk-r9/build/tools/make-standalone-toolchain.sh --platform=<your desired android platform> --install-dir=<location where you want android toolchain>
file libapi.so

如果它说是手臂,你就很好。如果上面写的是x86,那么它将无法工作(除了x86安卓设备)。

评论中的人表示,您几乎肯定是为x86而不是arm编译的。(您说您正在将cygwin与Windows一起使用,默认情况下将编译为x86,除非您的Windows框是arm框,我猜情况并非如此。)

Android ndk中有一个名为make-standalone-toolchain.sh的脚本。如果您位于安装ndk的当前目录中,则可以通过键入以下内容来使用:

./android-ndk-r9/build/tools/make-standalone-toolchain.sh --platform=<your desired android platform> --install-dir=<location where you want android toolchain>
file libapi.so
将这些工具放在您的路径中,并使用它们来构建您的库

我不知道cygwin是否包含“file”命令,但您可以通过键入以下内容来确定共享库的体系结构:

./android-ndk-r9/build/tools/make-standalone-toolchain.sh --platform=<your desired android platform> --install-dir=<location where you want android toolchain>
file libapi.so

如果它说是手臂,你就很好。如果上面写的是x86,那么它将无法工作(除非是在x86安卓设备上)。

谢谢您的回答。我用这个命令行构建了它:
g++-Wall-shared-fPIC-o libapi.so MyDLL.cpp
。所以根据你说的,如果我不使用ndk builder,我就不能包含这个库?所以你在linux上编译,使用的是你发行版的g++,而不是ndk中的g++?我在windows上,使用cygwin,没有ndk g++。我试图为我的C++项目创建一个ANDROID.MK,我调用NDK构建…谢谢你:)谢谢你的回答。我用这个命令行构建了它:
g++-Wall-shared-fPIC-o libapi.so MyDLL.cpp
。所以根据你说的,如果我不使用ndk builder,我就不能包含这个库?所以你在linux上编译,使用的是你发行版的g++,而不是ndk中的g++?我在windows上,使用cygwin,没有ndk g++。我试图为我的C++项目创建一个ANDROID.MK,我调用NDK构建…谢谢你:)谢谢你的回答。我用这个命令行构建了它:
g++-Wall-shared-fPIC-o libapi.so MyDLL.cpp
。所以根据你说的,如果我不使用ndk builder,我就不能包含这个库?所以你在linux上编译,使用的是你发行版的g++,而不是ndk中的g++?我在windows上,使用cygwin,没有ndk g++。我试图为我的C++项目创建一个ANDROID.MK,我调用NDK构建…谢谢你:)谢谢你的回答。我用这个命令行构建了它:
g++-Wall-shared-fPIC-o libapi.so MyDLL.cpp
。所以根据你的意思,如果我把这个图书馆包括进去,我就不能把它包括进去