设为首页 收藏本站 662p开源网
开启辅助访问 切换到宽版

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

切换风格 立即注册 找回密码

安卓教程网

发表于 2015-2-6 00:06:27 | 显示全部楼层 |阅读模式
更多

在工程目录下的jni文件夹下编写的c/c++代码在编译时,通常会遇到如下的几种类型错误:

1、Unresolved inclusion:<XXX>

2、syntax error

3、Function 'XXX' could not be resolved

4、Type 'XXX' could not be resolved

5、Symbol 'XXX' could not be resolved

6、Method 'XXX' could not be resolved

7、Invalid arguments 'Candidates are: ...'


错误原因:

大多数情况是因为相关头文件没有加入导致,也有一些是因为一些参数无效导致的(当然无效参数也可能是因为头文件未加入,见下述)。


相关错误解决方法——添加头文件:

错误内容一:

    1、Unresolved inclusion: <jni.h>、Unresolved inclusion: <stdio.h>、Unresolved inclusion: <malloc.h>、Unresolved inclusion: <android/log.h>、...

    2、Function '__android_log_print' could not be resolved、Type 'JNIEnv' could not be resolved、Type 'jstring' could not be resolved、Type 'jclass' could not be  resolved、Function 'malloc' could not be resolved、Function 'memcpy' could not be resolved、Method 'FindClass' could not be resolved、Type 'jsize' could not be  resolved、Symbol 'NULL' could not be resolved、...

解决方法:

    右击项目 --> Properties --> 左侧C/C++ General --> Paths and Symbols --> 右侧Includes --> GNU C++(.cpp) --> Add

                                                                                                                                                                 | __>GNU C(.c)        __|

${NDKROOT}\platforms\android-18\arch-arm\usr\include

错误内容二:

    1、Unresolved inclusion: <iostream>、Unresolved inclusion: <fstream>、Symbol 'std' could not be resolved、..

    2、Type 'fstream' could not be resolved、Symbol 'in' could not be resolved、Method 'seekg' could not be resolved、Method 'read' could not be resolved、...

解决方法:

    添加路径(步骤见上述解决方法):

${NDKROOT}\sources\cxx-stl\gnu-libstdc++\4.8\include 、${NDKROOT}\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi\include

错误内容三:

    Invalid arguments 'Candidates are:void * malloc(?)'、Invalid arguments 'Candidates are:void * memcpy(void *, const void *, ?)'

解决方法:

    添加路径(步骤见上述解决方法):

${NDKROOT}\toolchains\arm-linux-androideabi-4.8\prebuilt\windows\lib\gcc\arm-linux-androideabi\4.8\include


相关错误解决方法——符号替换:

有时编译时会遇到这样的错误提示:Invalid arguments 'Candidates are:std::basic_istream<char,std::char_traits<char>> & read(char *, ?)',尽管我们添加了相应的头文件,但仍然有无效参数这样的错误,错误提示中的‘?’表示无效参数。

碰到这类错误,可以索引到对应函数(ctrl+点击该函数)read,查看函数定义中的参数类型,此函数索引到的头文件中的参数类型为streamsize,但使用时用到的long。

解决方法:

右击项目 --> Properties --> 左侧C/C++ General --> Paths and Symbols --> 右侧Symbols --> GNU C++(.cpp) --> Add

                                                                                                                                                              | __>GNU C(.c)        __|

Name的值:streamsize,Value的值:long

添加完成后,点击确定后,错误消失。


  

新浪微博达人勋

高级会员

926

积分

309

威望

0

金钱

Rank: 4

积分
926
发表于 2015-2-6 00:09:26 | 显示全部楼层
我也顶起出售广告位

新浪微博达人勋

高级会员

2256

积分

750

威望

4

金钱

Rank: 6Rank: 6

积分
2256

社区QQ达人

发表于 2015-2-14 23:54:59 | 显示全部楼层
锄禾日当午,发帖真辛苦。谁知坛中餐,帖帖皆辛苦!

新浪微博达人勋

高级会员

816

积分

272

威望

0

金钱

Rank: 4

积分
816
发表于 2015-3-15 10:00:34 | 显示全部楼层
先抢到先,坐到位,呵呵

新浪微博达人勋

高级会员

1760

积分

587

威望

0

金钱

Rank: 6Rank: 6

积分
1760
发表于 2015-3-28 06:16:06 | 显示全部楼层
佩服佩服!

新浪微博达人勋

高级会员

966

积分

319

威望

4

金钱

Rank: 4

积分
966
发表于 2015-4-2 19:27:27 | 显示全部楼层
我不是打酱油的啊,呵呵

新浪微博达人勋

高级会员

1841

积分

614

威望

0

金钱

Rank: 6Rank: 6

积分
1841
发表于 2015-4-4 20:39:33 | 显示全部楼层
确实不错,顶先

新浪微博达人勋

高级会员

933

积分

307

威望

5

金钱

Rank: 4

积分
933
发表于 2015-4-9 01:32:11 | 显示全部楼层
看看如何先
发表于 2015-4-9 06:33:22 | 显示全部楼层
顶起顶起顶起

新浪微博达人勋

高级会员

816

积分

272

威望

0

金钱

Rank: 4

积分
816
发表于 2015-4-14 00:15:10 | 显示全部楼层
我来了
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Archiver|手机版|小黑屋|安卓教程网 ( 粤ICP备12089784号  

GMT+8, 2018-9-24 09:27 , Processed in 0.655607 second(s), 56 queries .

Powered by Discuz X3.1

© 2001-2013 IOS教程网

快速回复 返回顶部 返回列表