Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.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/6/cplusplus/158.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和x2B之间的交互/通信+;还有一个Java程序 我有一个用java编写的应用程序,还有一些带有系统钩子的C++代码。这两个人必须互相交流。我的意思是C++子程序必须向java发送一些数据。如果可能的话,我会用一种语言写下整件事。我现在所做的真的很傻,但很管用。我隐藏了C++程序的窗口并把它的数据发送到它的标准输出,然后我用java的标准输入读取输出!!!! 好的,我知道什么是JNI,但我正在寻找更简单的方法(如果有的话)_Java_C++_Java Native Interface_Native_Interaction - Fatal编程技术网

C和x2B之间的交互/通信+;还有一个Java程序 我有一个用java编写的应用程序,还有一些带有系统钩子的C++代码。这两个人必须互相交流。我的意思是C++子程序必须向java发送一些数据。如果可能的话,我会用一种语言写下整件事。我现在所做的真的很傻,但很管用。我隐藏了C++程序的窗口并把它的数据发送到它的标准输出,然后我用java的标准输入读取输出!!!! 好的,我知道什么是JNI,但我正在寻找更简单的方法(如果有的话)

C和x2B之间的交互/通信+;还有一个Java程序 我有一个用java编写的应用程序,还有一些带有系统钩子的C++代码。这两个人必须互相交流。我的意思是C++子程序必须向java发送一些数据。如果可能的话,我会用一种语言写下整件事。我现在所做的真的很傻,但很管用。我隐藏了C++程序的窗口并把它的数据发送到它的标准输出,然后我用java的标准输入读取输出!!!! 好的,我知道什么是JNI,但我正在寻找更简单的方法(如果有的话),java,c++,java-native-interface,native,interaction,Java,C++,Java Native Interface,Native,Interaction,有人能告诉我怎么做吗 任何帮助都将不胜感激 Sockets&是我想到的两种技术 另外,尝试或。从我的头顶开始两种方法: 1) 创建两个流程并使用任何合适的IPC < P > 2)将C++应用程序编译为动态库,并输出标准C接口的函数,这些语言可以从任何语言调用。 < P>如果您没有找到JNI’易’,则需要一个IPC(进程间通信)机制。因此,从C++进程中,你可以与java语言进行通信。 控制台重定向是IPC的一种形式,本质上就是IPC 因为你发送的内容的性质并不十分清楚,所以很难给你一个好的答案。

有人能告诉我怎么做吗

任何帮助都将不胜感激

Sockets&是我想到的两种技术


另外,尝试或。

从我的头顶开始两种方法:

1) 创建两个流程并使用任何合适的IPC


< P > 2)将C++应用程序编译为动态库,并输出标准C接口的函数,这些语言可以从任何语言调用。

< P>如果您没有找到JNI’易’,则需要一个IPC(进程间通信)机制。因此,从C++进程中,你可以与java语言进行通信。 控制台重定向是IPC的一种形式,本质上就是IPC

因为你发送的内容的性质并不十分清楚,所以很难给你一个好的答案。但是,如果您有可以轻松序列化为简单协议的“简单”对象或“命令”,那么您可以使用通信协议,例如
协议缓冲区

#include <iostream>
#include <boost/interprocess/file_mapping.hpp>

// Create an IPC enabled file
const int FileSize = 1000;

std::filebuf fbuf;
fbuf.open("cpp.out", std::ios_base::in | std::ios_base::out 
                          | std::ios_base::trunc | std::ios_base::binary); 
// Set the size
fbuf.pubseekoff(FileSize-1, std::ios_base::beg);
fbuf.sputc(0);

// use boost IPC to use the file as a memory mapped region
namespace ipc = boost::interprocess;
ipc::file_mapping out("cpp.out", ipc::read_write);

// Map the whole file with read-write permissions in this process
ipc::mapped_region region(out, ipc::read_write);

// Get the address of the mapped region
void * addr       = region.get_address();
std::size_t size  = region.get_size();

// Write to the memory 0x01
std::memset(addr, 0x01, size);

out.flush();
#包括
#包括
//创建启用IPC的文件
const int FileSize=1000;
std::filebuf fbuf;
fbuf.open(“cpp.out”,std::ios_base::in | std::ios_base::out
|std::ios_base::trunc | std::ios_base::binary);
//设定大小
fbuf.pubseekoff(FileSize-1,std::ios_base::beg);
fbuf.sputc(0);
//使用boost IPC将文件用作内存映射区域
名称空间ipc=boost::进程间;
ipc::文件映射输出(“cpp.out”,ipc::读写);
//在此过程中使用读写权限映射整个文件
ipc::映射的_区域区域(out,ipc::读_写);
//获取映射区域的地址
void*addr=region.get_address();
std::size\u t size=region.get\u size();
//写入内存0x01
std::memset(地址,0x01,大小);
out.flush();

现在,您的java文件可以打开“cpp.out”并像普通文件一样读取内容。

您有能力修改这两个程序吗?或者其中一个已经修复了?@templatetypedef,是的,我可以编辑这两个。它们都是我的。你可以在这里看到应用程序(mimer.sourceforge.net),它是2.0版的!!!