我在Mac上的eclipse开发Java,怎么把以前的C++代码嵌入到Java工程里面来?
想在Java里面嵌入C++恐怕不行,只能同时运行java和C++程序,让他们通信。一种方式是一个程序写文件读文件,还有一种是获取终端输入输出:
命令行参数的方式:
public void runcmd2() {
// 新添加的子进程名可以在下面修改,子进程的默认路径在自己所建立的工程下
String cmd = "\"process.exe\"";
//该程序用c语言写的,
try {
Process p = Runtime.getRuntime().exec(cmd);//打开cmd进程
inp = new BufferedReader(new InputStreamReader(p.getInputStream()));
//获取cmd进程的输出
out = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
//获取cmd进程的输入
/*如果你先有输出再有输入,你需要把下面的输入函数与输出函数调换*/
out.write("4\n");//输入函数,表示你向cmd进程输入了一个整数4;
out.flush();
String buff = new String();
buff = inp.readLine();//输出函数,使cmd的输出在java控制台中
while (buff != null) {//逐行获取输出内容
System.out.println(buff);
buff = inp.readLine();
}
inp.close();
out.close();
}
直接通过标准输入:
String cmd = "\"project1.exe\"";
//该程序用c语言写的,大家可以在test0里面看到源码
String arg = a;//传进来的参数赋给arg
String str1[] = { cmd, arg };
try {
//当Runtime.getRuntime().exec(str1)里面传的参数是个String数组时
//,第一个是进程名,后面的是cmd(如果你有c语言写的,
//那就是c语言要接受的输入参数),进程要接受的参数
Process p = Runtime.getRuntime().exec(str1);
//打开cmd进程,并且传参数str1[1]...str1[str1.length()-1];
inp = new BufferedReader(new InputStreamReader(p.getInputStream()));
//获取cmd进程的输出
out = new BufferedWriter(
new OutputStreamWriter(p.getOutputStream()));
//获取cmd进程的输入
String buff = new String();
buff = inp.readLine();//输出函数,使cmd的输出在java控制台中
while (buff != null) {//逐行获取输出内容
System.out.println(buff);
buff = inp.readLine();
}
inp.close();
out.close();
}
谢谢!
我是原来C++的程序写好了,现在想用Java做一个GUI,看来很复杂的样子