java的jni是什么_JNICALL是不是JAVA里面的东西?那JNICALL是什么类型?

我现在在编译tomcat3.3中的mod_jk模块,发现如下错误

cc -DAIX=43 -DUSE_PTHREAD_SERIALIZED_ACCEPT -U__STR__ -DAIX_BIND_PROCESSOR -qnog

enpcomp -qnousepcomp -DUSE_HSREGEX -DUSE_EXPAT -I../lib/expat-lite -DSHARED_MODU

LE -I/rtdb/apache/apache/include -I../common  -c ../common/jk_jni_worker.c

"../common/jk_jni_worker.c", line 739.28: 1506-068 (W) Operation between types "

long(*)(const struct JNIInvokeInterface_***,const struct JNINativeInterface_***,

void*)" and "void*" is not allowed.

"../common/jk_jni_worker.c", line 740.34: 1506-068 (W) Operation between types "

long(*)(const struct JNIInvokeInterface_***,int,int*)" and "void*" is not allowe

d.

"../common/jk_jni_worker.c", line 741.43: 1506-068 (W) Operation between types "

long(*)(void*)" and "void*" is not allowed.

在程序中队应为:

739:        jni_create_java_vm =dlsym(handle, "JNI_CreateJavaVM");

740:        jni_get_created_java_vms = dlsy(handle, "JNI_GetCreatedJavaVMs");

741:        jni_get_default_java_vm_init_args = dlsym(handle, "JNI_GetDefaultJavaVMI

jni_create_java_vm 从如下行中发现可能为 JNICALL类型

jint (JNICALL *jni_create_java_vm)(JavaVM **, JNIEnv **, void *) = NULL;

但如果把739行进行类型强制转换如下(我不能肯定我的做法正确):

jni_create_java_vm =(JNICALL *)dlsym(handle, "JNI_CreateJavaVM");

jni_create_java_vm =(JNICALL)dlsym(handle, "JNI_CreateJavaVM");

则提示如下错误:

"../common/jk_jni_worker.c", line 741.39: 1506-275 (S) Unexpected text ')' encou

ntered.

"../common/jk_jni_worker.c", line 741.40: 1506-271 (S) The indirection operator

cannot be applied to a void pointer.

"../common/jk_jni_worker.c", line 741.75: 1506-277 (S) Syntax error: possible mi

ssing ')' or ','?

"../common/jk_jni_worker.c", line 741.28: 1506-068 (W) Operation between types "

long(*)(const struct JNIInvokeInterface_***,const struct JNINativeInterface_***,

void*)" and "unsigned char*" is not allowed.

"../common/jk_jni_worker.c", line 743.43: 1506-068 (W) Operation between types "

long(*)(void*)" and "void*" is not allowed.

这个错误怎么修改?我的做法是否正确?请指教!

|

JNICALL是JAVA调用本地方法时,用C/C++写的本地方法库中的函数导出方式,是一个C/C++里的宏:

#define JNICALL __stdcall

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值