我想在JNI中对16字节数组进行硬编码,并使用方法将其返回。
这不行
static jbyteArray JNICALL getKeyBytes(JNIEnv *env, jobject thiz)
{
F_LOG;
Mutex::Autolock _m(sLock);
jbyteArray result;
jbyte* resultType = new jbyte[16];
result = (*env)->NewByteArray(env, 16); //line 214
resultType = {52, 14, 25, 32, 75, 83, 35, 89, 40, 69, 35, 73, 84, 82, 35, 30};
(*env)->SetByteArrayRegion(env, result, 0, 16, resultType);
delete [] resultType;
return result;
}
我收到以下错误
NativeCodeCaller.cpp:214:17:错误:’->’的基本操作数具有非指针类型’_JNIEnv’
NativeCodeCaller.cpp:215:78:警告:扩展的初始化程序列表仅在-std = c 0x或-std = gnu
0x时可用NativeCodeCaller.cpp:215:78:错误:无法在分配中将“括号包围的初始化程序列表>”转换为“ jbyte *”
NativeCodeCaller.cpp:216:8:错误:“->”的基本操作数具有非指针类型“ _JNIEnv”
任何快速帮助?:)
该错误base operand of '->' has non-pointer type
表明您应该使用.
而不是->
。
因此,无论您使用(*env).NewByteArray(env, 16);
还是env->NewByteArray(env, 16);
。这与第216行相同。
您还会在下一行(215)处看到另一个错误cannot convert "brace-enclosed initializer list>" to 'jbyte*' in assignment
,因为赋值的括号语法仅在声明数组/指针的地方有效(我认为它也取决于编译器,但我不确定)。
您应该尝试:
jbyte resultType[16] = {52, 14, 25, 32, 75, 83, 35, 89, 40, 69, 35, 73, 84, 82, 35, 30};
希望这可以帮助。
情况: > 在按钮上的第一个片段,我想打开带有部分的第二个片段 在第二个片段上,我可以创建新部分(或使用已存在的),然后在列表项上单击打开第三个片段 在第三个片段上,我可以编写新服务(或使用已存在的服务),然后单击按钮返回第一个片段 并显示部分(来自第二个片段)和服务(来自第三个片段) 我的想法是使用片段。在第二个片段上设置参数(bundle),并将其传输到第三个片段 我应该如何正确地将变量从Al
问题内容: 我正在尝试使用android NDK。 有没有办法将在JNI中创建的数组(以我的情况为例)返回给Java?如果是这样,请提供一个可以执行此操作的JNI函数的简单示例。 问题答案: 如果你已经阅读了文档,但仍然有一些问题应作为最初问题的一部分。在这种情况下,示例中的JNI函数将创建多个数组。外部数组由使用JNI函数创建的“对象”数组组成。从JNI的角度来看,这就是一个二维数组,即一个包含
问题内容: 我正在使用接受json响应的jquery ajax调用: 在我的php后端函数中,我在一个简单的数组上使用json_encode,如下所示: 但是 alert(msg.hello) 为我返回 未定义 。这是怎么了?另外,在我的 console.log中, 我能够得到如下输出: 问题答案: 使用的返回数据:
我有一个本机方法,它返回目录中的文件数组。公共静态本机字符[][]扫描(字符串路径);我不能返回字符串数组,因为如果文件的编码无效-一切都崩溃了,问题是在java端正确地将char[]转换为字符串,当我尝试新字符串(chars)时;我得到无法打印的字符串(无效)。请纠正我。 这是输出的示例(如果方法返回String[])
因此,作为家庭作业,我的任务是编写包含5种静态方法的代码。其中两人要求提供以下内容: “编写一个以整数X为参数的方法,如果X为偶数,则返回true;如果X为奇数,则返回false。” 和 “编写一个以正整数N为参数的方法,如果N是素数,则返回true,否则返回false。假设N 我不清楚我是否需要打印出正确或错误的方法。在我将println添加到方法调用之前,它们显然没有打印。所以我想我有两个问题
问题内容: 在Java中,我有: 我希望本机方法“ nativeGetStatus”返回此枚举值。 JNI返回整数并与java中的enum的值进行比较是一个选项,但是想知道是否可以通过jobject返回值并将其直接分配给state吗?如果是,怎么办? 问题答案: 当然可以。枚举值是Enum类的公共静态字段,因此您可以使用此官方手册编写代码。只需从JNI获取字段并将其作为jobject返回即可。