java - 使用 cygwin 为 JNI (Android NDK) 编译 C++ 代码

标签 java c++ android java-native-interface android-ndk

我正在尝试构建一个 C++ 文件,以便通过 JNI 在我的 Android 应用程序中使用。我正在使用 Cygwin 在 Windows 中构建。我对此完全陌生,不知道自己在做什么。

这是输出的一部分:

$ g++ -c test_wrap.cxx -I"C:\dev\android-ndk-r4b\build\platforms\android-4\arch-arm\usr\include" -I./include
In file included from C:/dev/android-ndk-r4b/build/platforms/android-4/arch-arm/usr/include/sys/_types.h:40,
                 from C:/dev/android-ndk-r4b/build/platforms/android-4/arch-arm/usr/include/stdint.h:32,
                 from C:/dev/android-ndk-r4b/build/platforms/android-4/arch-arm/usr/include/sys/types.h:34,
                 from C:/dev/android-ndk-r4b/build/platforms/android-4/arch-arm/usr/include/strings.h:42,
                 from C:/dev/android-ndk-r4b/build/platforms/android-4/arch-arm/usr/include/stdlib.h:42,
                 from test_wrap.cxx:160:
C:/dev/android-ndk-r4b/build/platforms/android-4/arch-arm/usr/include/machine/_types.h:44: error: conflicting declaration 'typedef long unsigned int size_t'/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/stddef.h:213: error: 'size_t' has a previous declaration as `typedef unsigned int size_t'
C:/dev/android-ndk-r4b/build/platforms/android-4/arch-arm/usr/include/machine/_types.h:44: error: declaration of `typedef long unsigned int size_t'/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/stddef.h:213: error: conflicts with previous declaration `typedef unsigned int size_t'
C:/dev/android-ndk-r4b/build/platforms/android-4/arch-arm/usr/include/machine/_types.h:44: error: declaration of `typedef long unsigned int size_t'/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/stddef.h:213: error: conflicts with previous declaration `typedef unsigned int size_t'
C:/dev/android-ndk-r4b/build/platforms/android-4/arch-arm/usr/include/machine/_types.h:46: error: conflicting declaration 'typedef long int ptrdiff_t'/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/stddef.h:151: error: 'ptrdiff_t' has a previous declaration as `typedef int ptrdiff_t'
C:/dev/android-ndk-r4b/build/platforms/android-4/arch-arm/usr/include/machine/_types.h:46: error: declaration of `typedef long int ptrdiff_t'/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/stddef.h:151: error: conflicts with previous declaration `typedef int ptrdiff_t'
C:/dev/android-ndk-r4b/build/platforms/android-4/arch-arm/usr/include/machine/_types.h:46: error: declaration of `typedef long int ptrdiff_t'/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/stddef.h:151: error: conflicts with previous declaration `typedef int ptrdiff_t'

你能帮我一下吗?

以马内利

最佳答案

Cygwin 中构建的应用程序环境假定应用程序将在 Windows 上执行,并且 Cygwin DLL 可用。正如 yock 所述,您需要设置一个针对 Android 操作系统的交叉编译器。

关于java - 使用 cygwin 为 JNI (Android NDK) 编译 C++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4337177/

相关文章:

java - 如何通过soot获取一个类的子类?

java - Spring Security 在本地主机上工作,但在服务器上的 docker 中给出 '403 Forbidden'

python - 使用宏从 __VA_ARGS__ 生成参数列表

android - x86 Android 模拟器无法在 macOS Sierra 上运行

Android 从数据库中替换 Listview 中的 html 实体

c# - Xamarin 部署不适用于 Android

java 中的 java.net.UnknownHostException 错误(将 JSON 数据解析为字符串)

c++ - 定义全局数组

c++ - 如何设置 QDialog 在 exec() 方法上不可见?

java - java中如何立即从另一个线程杀死一个线程?