您的位置:首页 > 编程语言 > Java开发

Eclipse+NDK+adt+cdt开发环境问题解决

2015-09-24 16:09 537 查看

概述

本文描述了在Eclipse环境下进行NDK开发时遇到的问题及相关解决方法。

问题列表:

*
Unresolved inclusion: <jni.h>
Unresolved inclusion: <vector>


*
memcpy
Invalid arguments
问题

这几个问题不影响程序的编译,但会导致无法在Eclipse中进行运行程序等操作。

开发环境

Windows XP

Eclispe Luna

cdt-8.6.0

adt-23.0.4

android-ndk-r10e

android-sdk_r23.0.2-windows

注:解决问题前请确保项目无误,可使用
ndk-build
编译。且Eclipse SDK、NDK路径已配置完毕

Unresolved inclusion
问题

错误描述

项目添加
NDK支持
后,项目中包含的平台相关头文件及
std
库头文件等均出现
Unresolved inclusion
提示。

使用
ndk-build
命令进行编译并没有错误提示。

问题解决

清除旧的NDK配置

关闭Eclispe,删除项目目录下的
.cporject
文件。

修改
.project
文件,删除包含’cdt’的配置段。

<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>


<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>


<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>


注:若尚未添加NDK支持,可忽略此步骤

重新添加NDK支持

项目右键
Android Tools -> Add Native Support...


添加NDK库相关路径

在菜单栏
Project -> Propertis
中,
C/C++ General -> Paths and Symbols
下,
Include
标签页下,添加如下路径。

$NDK_PATH\platforms\android-19\arch-arm\usr\include
$NDK_PATH\sources\cxx-stl\gnu-libstdc++\4.8\include
$NDK_PATH\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi-v7a\include


注:此时,
Unresolved inclusion
提示应已经消失,但仍存在
Symbol 'string' could not be resolved
之类提示。

重建C/C++索引

菜单栏
Project -> C/C++ Index -> Rebuld


至此,
Resolve
相关问题全部解决完毕。

注:网上部分教程未提到添加
$NDK_PATH\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi-v7a\include
,不添加此路径无法解决
Symbol 'string' could not be resolved
问题。

Invalid arguments
问题

错误描述

调用
memcpy
vector.resize()
等函数时,Eclipse提示

Invalid arguments '
Candidates are:
void resize(?)
void resize(?, const float &)
'


临时解决方案

Project -> Propertis
中,修改
C/C++ General -> Code Analysis
配置,将
Invalid arguments
项由
Error
修改为
Warning


尽管该方法会解决我们的问题,但会导致真正的
Invalid arguments
错误也会被忽略。

注:网络上有人提到在
C/C++ General -> Preprocessor...
中,修改’Provicer’页签下的配置,勾选
CDT GCC Built-in Complier Settings[Shared]
选项,但我测试并没有解决该问题。

参考资料

Eclipse giving me Invalid arguments ’ Candidates are: void * memset(void *, int, ?) ’ though I know the args are good

Unresolved inclusion error while using NDK

解决NDK开发中Eclipse报错“Unresolved inclusion jni.h”的最终方法

Code analysis “Invalid Argument” reports invalid argument which is valid
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: