我想知道是否可以将C / C ++ dll的STDOUT连接到JTextArea?问题是,我正在使用第三方DLL,所以我不能手动改变它们。 基本上我有我的Java小程序,然后我自己的DLL加载和管理第三方DLL,它是第三部分DLL,它做像printf()的东西。它在调试期间显示在Eclipse控制台中,但我想在JTextArea中使用它。
编辑:为了澄清,我在我的win32 DLL中使用了std :: cout。
由于
答案 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。