Android系统源码AOSP(Android Open Source Platform)下编译的.so在NDK环境下使用时,NDK编译报标题所示错误。Test类源码如下:
class Test{
    public:
        Test();
        void helloWorld();  
};

jni中的使用代码如下:

Test test = new Test();
test.helloWorld();
错误提示:标量向非标量转换错误。即我在使用时,将标量转换为非标量导致转换错误,即编译器不允许这样转换。研究了一下,Test test = new Test()右侧的new操作符创建的是指针变量,左侧的类属于非标量。

【问题解决】:修改jni使用代码如下:

Test *test = new Test();
test->helloWorld();

这样等号左右两侧均为标量。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐