首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用cygwin for JNI编译C++代码(Android NDK)

使用cygwin for JNI编译C++代码(Android NDK)
EN

Stack Overflow用户
提问于 2010-12-03 00:18:30
回答 5查看 3.7K关注 0票数 2

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

以下是输出的一部分:

代码语言:javascript
复制
$ 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'

你能帮我一下吗?

伊曼纽尔

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-01-31 23:52:23

答案很简单,就是创建一个Android.mk文件并使用ndk-build命令。

票数 0
EN

Stack Overflow用户

发布于 2010-12-03 00:43:53

Cygwin环境中构建的应用程序假定应用程序将在具有Cygwin DLL的Windows上执行。正如yock所说,你需要建立一个针对Android操作系统的交叉编译器。

票数 1
EN

Stack Overflow用户

发布于 2010-12-03 00:28:39

我根本不是C/C++专家,但在我看来,您正在尝试使用面向i686的编译器为Arm进行编译。仅仅包含你想要的头文件是不够的,需要一个交叉编译器才能告诉GCC以一个arch为目标。

http://wiki.osdev.org/GCC_Cross-Compiler

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4337177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档