C ++上的API软件

时间:2012-01-24 17:25:33

标签: java c++ api

我想知道如何从我的Java应用程序中获取C ++运行程序的变量。我想我必须做一个API,但我不知道如何开始这个。事实上,我想获得有关Ekiga软电话中数据包的信息。我在Ekiga main.cpp中对我想要的内容进行了本地化:

double lost = mw->priv->current_call->get_lost_packets();
double late = mw->priv->current_call->get_late_packets();
double out_of_order = mw->priv->current_call->get_out_of_order_packets();

3 个答案:

答案 0 :(得分:2)

我认为你需要的是JNI:http://en.wikipedia.org/wiki/Java_Native_Interface

您必须创建一个dll,它将具有返回此值的方法,并且具有将使用此dll的本机方法的java类。

答案 1 :(得分:1)

听起来好像要使用JNIJNA等技术来实现桥接层。 第二种选择是在两种语言之间编写Web serviceMessage passing图层。我会避免CORBA这样一个简单的问题(实际上,我会避免CORBA期间hehehe)。 或者让C ++将数据写入数据库,文件等,并编写Java代码来读取它。

答案 2 :(得分:1)

您无法直接从其他进程访问c ++变量。我不知道ekiga是否已经提供了从外部程序获取数据的方法,所以这里有几种获取数据的方法(都涉及以某种方式修改ekiga本身)。

  • 添加套接字以侦听ekiga程序中的连接,并使用客户端套接字使java程序连接到此套接字。这样,只要这些值发生变化,您就可以将信息发送到连接的java程序。

  • 在ekiga中启动java程序或让你的java程序启动ekiga作为本机方法调用。这两个都涉及jni并导致两个部分(ekiga和java程序)作为单个进程运行。

第一个更简单,更不容易出错,但是你需要一些关于java和c ++中网络编程的基本知识。