java - 不是结构或联合
问题描述
每当我尝试构建此代码时
#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);
}
我明白了
在非结构或联合的情况下请求成员“*******”
for NewObjectArray
, NewStringUTF
, FindClass
, 和 '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 中,诸如->
and之类的后缀运算符(...)
具有比强制转换更高的词法优先级。您可能需要添加一些括号以明确您的意思。
推荐阅读
- javascript - 如何将第一个数组中的 index[0] 中的值分配给第二个数组中的 index[0]?
- xml - 如何在 XSLT 中使用 KEY、KEYREF 显示数据
- r - 数据框中的列联表,将第一列作为参考
- unity3d - Shader.CreateGPUProgram - 性能问题
- ios - 如何增加 UItableviewcell 内的 UItableview 高度?
- android - 如何防止 RecyclerView 在布局计算后自动滚动
- r - R:直接从网站读取 .DAT 文件时出错
- database - 为什么 Spark Mongo 连接器不下推过滤器?
- javascript - 如何为页面的所有框架定义全局 onkeydown?
- infinispan - Infinispan 服务器集群 - 定义成员 IP 地址