请教大侠如何在C++中调用Java?

Darkay_Lee 2003-08-12 09:06:14
如题,现在有一Java的库想在C++的项目中直接引用,有什么方法?不管好坏.^_^。
...全文
32 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Darkay_Lee 2003-09-24
  • 打赏
  • 举报
回复
我的IE总算好了,拖欠分数这么久,请原谅。
fast_time 2003-08-29
  • 打赏
  • 举报
回复
Java通过JNI调用C,C也能通过JNI调用Java
NewStarter 2003-08-29
  • 打赏
  • 举报
回复
jni
cocotree 2003-08-29
  • 打赏
  • 举报
回复
GZ
taolei 2003-08-14
  • 打赏
  • 举报
回复
C/C++的论坛肯定是不会管这个问题的。
楼主好好学习一下JNI,就可以解决这个问题了。
Darkay_Lee 2003-08-14
  • 打赏
  • 举报
回复
完了,我的IE出毛病了,想给分竟然点了之后什么反映也没有,状态条中显示“Error on Page”,倒~~~~~
xjffj 2003-08-13
  • 打赏
  • 举报
回复
好像核心技术2中有,不然就是核心1。有c++调JAva和java调C++
asdmonster 2003-08-13
  • 打赏
  • 举报
回复
c++能调用java了,看来改学习了。汗
Darkay_Lee 2003-08-13
  • 打赏
  • 举报
回复
谢谢punpuny(),你说的编译成Type Library是如何编译法?JB中如何操作,谢谢。。

明天给分,希望大家可以再说说其他见解
Darkay_Lee 2003-08-12
  • 打赏
  • 举报
回复
yjsyjs(yjsyjs)你可能理解错误了我是想在C++中调用Java的库而不是想在Java中调用C++的库,后者我知道怎么用。但是前者好像没有什么讨论的。

asdmonster(努力学习VC,讨回失去的信誉分) 理解我的意思了。
asdmonster 2003-08-12
  • 打赏
  • 举报
回复
java 通过jni调用c++,c++ 不能调用 java.corba的调用属于组件间的调用,和搂主的意思大相径庭。
cctvnet 2003-08-12
  • 打赏
  • 举报
回复
偶也想知道
jouny0 2003-08-12
  • 打赏
  • 举报
回复
同意 yjsyjs(yjsyjs) ( ) 的意见
具体实现到C++版去问问看。
yjsyjs 2003-08-12
  • 打赏
  • 举报
回复
jni可实现
9731boy 2003-08-12
  • 打赏
  • 举报
回复
呵.没有试过..也很想知道..cobra 行不?
stonewang 2003-08-12
  • 打赏
  • 举报
回复
这个问题何不到C++版去提?
punpuny 2003-08-12
  • 打赏
  • 举报
回复
或者你可以将这些class编译成type library,这样直接可以使用COM来调用。
fpwang 2003-08-12
  • 打赏
  • 举报
回复
学习
punpuny 2003-08-12
  • 打赏
  • 举报
回复
你可以自己查看一下jni.h头文件,里面包含了所有可用的方法。
punpuny 2003-08-12
  • 打赏
  • 举报
回复
在C++中可以通过JNI调用Java中的方法,给你个例子

int main()
{
JavaVMOption options[1];
JNIEnv *env;
JavaVM *jvm;
JavaVMInitArgs vm_args;
long status;
jclass cls;
jmethodID mid;
jint square;
jboolean not;

options[0].optionString = "-Djava.class.path=.";
memset(&vm_args, 0, sizeof(vm_args));
vm_args.version = JNI_VERSION_1_2;
vm_args.nOptions = 1;
vm_args.options = options;
status = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);

if (status != JNI_ERR)
{
cls = (*env)->FindClass(env, "Sample2");
if(cls !=0)
{ mid = (*env)->GetStaticMethodID(env, cls, "intMethod", "(I)I");
if(mid !=0)
{ square = (*env)->CallStaticIntMethod(env, cls, mid, 5);
printf("Result of intMethod: %d\n", square);
}

mid = (*env)->GetStaticMethodID(env, cls, "booleanMethod", "(Z)Z");
if(mid !=0)
{ not = (*env)->CallStaticBooleanMethod(env, cls, mid, 1);
printf("Result of booleanMethod: %d\n", not);
}
}

(*jvm)->DestroyJavaVM(jvm);
return 0;
}
else
return -1;
}

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧