java 如何调用以完成的C++类库

bbipaladin 2008-04-01 10:59:08
查看了JNI后,感觉都在java 的类中声明了“本地方法”,而我遇到的问题是要使用C++类,而不只是简单的方法。
请诸位赐教啊!
...全文
124 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
miaoliujun 2008-04-01
  • 打赏
  • 举报
回复
SWIG不但可以生成JAVA的接口,还可以生成多种语言的接口,非常不错
miaoliujun 2008-04-01
  • 打赏
  • 举报
回复
我看你已经在另外一个帖子中找到解决问题的方案了,SWIG
这个应该结帖了啊:)
healer_kx 2008-04-01
  • 打赏
  • 举报
回复
C++的接口是__thiscall的,C接口并且为JNI可以调用的是__stdcall,一调准死机。
bbipaladin 2008-04-01
  • 打赏
  • 举报
回复
要写C接口,这种方案太麻烦了。
我查过有个SWIG好像可以做此事,但也是在这个C++类的构造函数上面不能执行。
比如:
我们的java类的主函数内容为:

生成的.dll加载是正确的;
CXXClass test = new CXXClass(); //就在这里出现了问题。c++的构造函数
test.sayme();
healer_kx 2008-04-01
  • 打赏
  • 举报
回复
不可以调用! JNI调用的是C接口,而不是C++接口!

要人工的给C++接口,写出一个C接口适配层才可以使用JNI !!!!!!!!!
zhsjun 2008-04-01
  • 打赏
  • 举报
回复
也必须使用JNI
zoubinstef 2008-04-01
  • 打赏
  • 举报
回复
??

gjgj3368 2008-04-01
  • 打赏
  • 举报
回复
路过,帮顶
bbipaladin 2008-04-01
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 qin_607 的回复:]
用jni调用本地的类 你可以这样做,把你要想要完成的功能在此类中完成,吧这个类注册到你java中的方法所对应的本地方法里
[/Quote]

问题的前提是:本地的类已经写好了(比如公司老早的底层平台),必须找一个通用的、简单的解决方法才是切实可行的。
有熟悉SWIG的朋友吗?
heniry_he 2008-04-01
  • 打赏
  • 举报
回复
用jni调用本地的类 你可以这样做,把你要想要完成的功能在此类中完成,吧这个类注册到你java中的方法所对应的本地方法里
bbipaladin 2008-04-01
  • 打赏
  • 举报
回复
我这些天正在整SWIG呢?就是发现这个c++构造函数这里遇到了问题。
你对SWIG熟悉吗?指点一下。
lpingxh 2008-04-01
  • 打赏
  • 举报
回复
学习。。。没用过

62,635

社区成员

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

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