解决class com.intellij.psi.impl.source.tree.PsiErrorElementImpl 异常的方法

近日,在利用Android Studio 2.2.3编写某APP的CPP模块时,无意中报出了如下的异常:

Element: class com.intellij.psi.impl.source.tree.PsiErrorElementImpl because: containing file is null
         invalidated at: see attachment

该异常是由本地native方法生成c++代码时触发的异常,具体表现为c++代码不能创建在cpp文件中,系统错误的新建了 jni文件夹,里面包含一个c文件,且该文件格式错乱,无法编写,无法编译。

由于初次遇到这个问题,于是赶紧寻找各路神仙的解决方案,试过的方法主要有以下的方法:

1.File -Invalidata Caches/Restart 【无效,问题依然存在】

2.在build.gradle中将cmake修改为如下方式:【无效】

externalNativeBuild {
    cmake {
        cppFlags "-std=c++11 -frtti -fexceptions"
        abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips', 'mips64'
    }
}

3.重新下载gradle和sdk api【无效】

就在心灰意冷,打算重建工程的时候,无意中在java-api中找到了该问题的原因:cpp主文件缺失!

有了方向就可以静下心来好好思考,但是我的cpp文件明明是已经创建了,但还是报这样的错误,于是我把重点放在了检查cpp文件合法性上面,经过仔细排查,原来是我调试c++模块时,不小心将

extern "C"误删,导致该文件编译时出现错误,预示编译器就误认为该文件不合法,触发了上述的bug。
【解决方法】
在方法声明前补充上 extern "C"  即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值