不是一个结构或联盟



每当我尝试构建此代码时

#include "jni.h"
#include "NetworkGUI.h"
#include "String.h"
#include "stdlib.h"
JNIEXPORT jobjectArray JNICALL Java_NetworkGUI_getNetworkNames(JNIEnv 
*env, jobject obj)
{
char *networkNames[3];
networkNames = {"TWC", "Comcast", "Spectrum"};
jobjectArray names;
names = (jobjectArray)env->NewObjectArray(3, env->FindClass("Java/lang/String"), env -> NewStringUTF(""));
int i;
for( i = 0; i < 3; i++) 
{
env -> SetObjectArrayElement(names, i, 
NewStringUTF(networkNames[i]));
}
return (names);
}

我得到

在非结构或联合中请求成员"*******">

用于调用NewObjectArrayNewStringUTFFindClass和"SetObjectArrayElement"的行。这是我的头文件

/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
/* Header for class NetworkGUI */
#ifndef _Included_NetworkGUI
#define _Included_NetworkGUI
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class:     NetworkGUI
* Method:    hostRun
* Signature: (I)I
*/
JNIEXPORT jobjectArray JNICALL Java_NetworkGUI_getNetworkNames
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif

究竟是什么原因造成的?

您没有给我们一个我们可以尝试的最小示例,也没有给我们错误发生的行,但我猜这个

(jobjectArray)env->NewObjectArray(...)

做了一些与你想象的不同的事情。在C中,后缀运算符(如->(...)(的词汇优先级高于强制转换。你可能想加上一些括号,把你的意思说清楚。

相关内容

最新更新