assignment makes integer from pointer without a cast [enabled by default
typedef struct{ unsigned char TermId[8]; unsigned char TerminalType; unsigned long MerchNum; }EMV_PARAM;
假设我的要引用的第三方库中有这个一个结构体,我在java层的声明: Java code?12 public class EMV_Param {public String termId; public String terminalType;public int merchNum;
我从java传到C的是一个对象,前2个属性是string,后一个是int。 然后我在C中要把这个值得到赋值到结构体里,我是这样操作的。
C/C++ code?12 EMV_PARAM ep;strcpy(ep.TermId,t_emv); ep.TerminalType=tt_emv; 其中t_emv,tt_emv都是我得到的jstring类型的值。 但是编译的时候,jni/EmvHandler.c:124:17: warning: assignment makes integer from pointer without a cast [enabled by default]
也就是ep.TerminalType=tt_emv; 这个报出了那种提示。我这样赋值有错吗? 你是怎么做的? 我看了下gps的jni文件 apn 是jstring型的 const char *apnStr = env->GetStringUTFChars(apn, NULL);
warning: assignment makes integer from pointer without a cast
这个意思是说你把指针赋值给了整形(C中char就是整形)。所以你要讲java传过来的的jstring转成char,或者直接传过来一个jchar或int。下面是怎么样把jstring转成char的例子:
const char *apnStr = env->GetStringUTFChars(t_emv, NULL); ep.TerminalType = *apnStr;
或者
char[] apnStr = env->GetStringUTFChars(t_emv, NULL); ep.TerminalType = apnStr[0];
|