最近因为某些需要在学习JNI,不过碰到了一些问题一直解决不了,希望高手能帮忙解答一下。
我有一个vc的dll,其中有个函数:int gcjAdrStr2Code(char *address,ADR_CODE *adrCode )
其参数中的结构体定义如下
typedef struct {
int codeLevel;
int cityCode;
int choCode;
int azaCode;
int gaikuCode;
int jukyoCode;
} ADR_CODE
现在我是在java中定义了一个和c中结构体一样的class ADR_CODE和一个本地函数public native int gcjAdrStr2Code(String address,ADR_CODE adrCode ),请问该如何写c代码,将java中的class ADR_CODE传递赋值给c中的结构体,让其作为参数被c中的函数调用
我有一个vc的dll,其中有个函数:int gcjAdrStr2Code(char *address,ADR_CODE *adrCode )
其参数中的结构体定义如下
typedef struct {
int codeLevel;
int cityCode;
int choCode;
int azaCode;
int gaikuCode;
int jukyoCode;
} ADR_CODE
现在我是在java中定义了一个和c中结构体一样的class ADR_CODE和一个本地函数public native int gcjAdrStr2Code(String address,ADR_CODE adrCode ),请问该如何写c代码,将java中的class ADR_CODE传递赋值给c中的结构体,让其作为参数被c中的函数调用
解决方案 »
- 请教一下一个session的问题
- Java编程关于LOOP问题!
- 看到那个4棵树的问题,我也来一个
- 关于“char”的问题,搞不懂一模一样的输入怎么结果和书上不一样?
- 『求助』JDBC-ODBC 链接 SQLserver 搜不到多字节的字符
- 关于继承的问题
- 点击按钮,如何使新生成的窗体在屏幕中间显示!!!
- jtable 的scroll问题?请大家帮忙?急!十分感谢!
- 关于print()被清空求助
- 如果要设计一个系统,用来统计世界上所有道路的总数,你会怎样设计?
- 在既是applet又是application的java程序中,如何判断当前运行的是applet还是application?
- 一个简单问题,好像很少人明白,特地请教各位高手!
JNIEXPORT jint JNICALL Java_test_geocoderJNI_gcjAdrStr2Code(JNIEnv * env, jobject this, jstring address, jobject adrCode)
{
char* addr;
addr = (char*)(*env)->GetStringUTFChars(env, address,0);
/*
*将class传递赋值给结构体
*/
......
}
jclass clsADR_CODE = env->GetObjectClass(adrCode); jfieldID fid = env->GetFieldID(clsADR_CODE, "codeLevel", "I");
st.codeLevel = env->GetIntField(adrCode, fid); fid = env->GetFieldID(clsADR_CODE, "cityCode", "I");
st.cityCode = env->GetIntField(adrCode, fid); ...