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();
这样等号左右两侧均为标量。