Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;软的 我想知道如何从我的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();_Java_C++_Api - Fatal编程技术网

C++;软的 我想知道如何从我的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();

C++;软的 我想知道如何从我的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();,java,c++,api,Java,C++,Api,我认为您需要的是JNI: 您必须创建一个dll,其中包含返回此值的方法,并且有一个java类,其中包含使用此dll的本机方法。我认为您需要的是JNI: 您必须创建一个dll,其中包含返回此值的方法,并且有一个java类,其中包含将使用此dll的本机方法。听起来您希望使用或之类的技术实现桥接层。 第二种选择是在两种语言之间编写一个或层。对于这样一个简单的问题,我会避免(实际上,我会避免CORBA时期,呵呵)。 或者是C++将数据写入数据库、文件等,编写java代码读取它。 < P>听起来好像你想用

我认为您需要的是JNI:


您必须创建一个dll,其中包含返回此值的方法,并且有一个java类,其中包含使用此dll的本机方法。

我认为您需要的是JNI:


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

听起来您希望使用或之类的技术实现桥接层。 第二种选择是在两种语言之间编写一个或层。对于这样一个简单的问题,我会避免(实际上,我会避免CORBA时期,呵呵)。
或者是C++将数据写入数据库、文件等,编写java代码读取它。

< P>听起来好像你想用这样的技术来实现一个桥层。 第二种选择是在两种语言之间编写一个或层。对于这样一个简单的问题,我会避免(实际上,我会避免CORBA时期,呵呵)。
要么是C++,要么是把数据写入数据库、文件等,编写java代码来读取它。

< p>你不能直接从不同的进程访问C++变量。我不知道ekiga是否已经提供了一种从外部程序获取数据的方法,所以这里有一些获取数据的方法(都涉及到以某种方式修改ekiga本身)

  • 添加套接字以侦听ekiga程序内的连接,并使用客户端套接字使java程序连接到此套接字。通过这种方式,您可以在这些值发生更改时将信息发送到连接的java程序

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


第一个更简单,更容易出错,但是你需要一些关于java和C++的网络编程的基本知识。P> < P>不能直接从不同的进程访问C++变量。我不知道ekiga是否已经提供了一种从外部程序获取数据的方法,所以这里有一些获取数据的方法(都涉及到以某种方式修改ekiga本身)

  • 添加套接字以侦听ekiga程序内的连接,并使用客户端套接字使java程序连接到此套接字。通过这种方式,您可以在这些值发生更改时将信息发送到连接的java程序

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


第一个更简单,更容易出错,但是你需要一些关于java和C++的网络编程的基本知识。p> 您可以使用JNI,但不确定“实现API”或“本地化我想要的”是什么意思。如果您只想捕获SIP数据包,那么可以使用wireshark或类似的工具。@AJG85:不,我只想在Java中间件中获取丢失和延迟数据包的数量。您可以使用JNI,但不确定“执行API”或“本地化我想要的”是什么意思。如果您只想捕获SIP数据包,那么可以使用wireshark或类似的工具。@AJG85:不,我只想在Java中间件中获取丢失和延迟数据包的数量。