JNI - 将STDOUT连接到JTextArea?

时间:2011-03-30 07:11:17

标签: java c++ swing applet java-native-interface

我想知道是否可以将C / C ++ dll的STDOUT连接到JTextArea?问题是,我正在使用第三方DLL,所以我不能手动改变它们。 基本上我有我的Java小程序,然后我自己的DLL加载和管理第三方DLL,它是第三部分DLL,它做像printf()的东西。它在调试期间显示在Eclipse控制台中,但我想在JTextArea中使用它。

编辑:为了澄清,我在我的win32 DLL中使用了std :: cout。

由于

2 个答案:

答案 0 :(得分:1)

什么是STDOUT?如果它是Posix文件句柄,那么你可以做的不多 做。你必须关闭它,然后打开一个临时文件,写入, 然后在Java部分中阅读它。如果你实际上正在使用std :: cout 对于输出,可以(暂时)改变streambuf 它使用stringbuf,然后将生成的字符串传递给Java。

答案 1 :(得分:0)

您可以在DLL中将stdout重定向到文件或管道。然后,您可以从Java中读取文件或管道,并将您读取的内容复制到JTextArea。另一个选择是将您的DLL移动到它自己的进程中,您可以从Java开始,然后从进程的stdout读取并写入您的JTextArea。

SetStdHandle (link to MSDN)将允许您重定向stdout。