JNI - подключение STDOUT к JTextArea? - PullRequest
3 голосов
/ 30 марта 2011

Мне интересно, можно ли подключить STDOUT dll C / C ++ к JTextArea? Дело в том, что я использую сторонние DLL, поэтому я не могу их вручную изменить. По сути, у меня есть мой Java-апплет, а затем моя собственная DLL, которая загружает и управляет сторонними DLL, и это третьи части DLL, которые выполняют такие функции, как printf (). Он отображается в консоли Eclipse во время отладки, но я хочу его в JTextArea или что-то в этом роде.

РЕДАКТИРОВАТЬ: Чтобы уточнить, я использую std :: cout в моей Win32 DLL.

Спасибо

Ответы [ 2 ]

1 голос
/ 30 марта 2011

Что такое STDOUT?Если это дескриптор файла Posix, вы мало что можете сделать.Вам придется закрыть его, затем открыть временный файл, записать в него и затем прочитать его в части Java.Если вы на самом деле используете std :: cout для вывода, можно (временно) изменить streambuf его на использование stringbuf, а затем передать сгенерированную строку в Java.

0 голосов
/ 30 марта 2011

В вашей DLL вы можете перенаправить стандартный вывод в файл или канал.Затем вы можете прочитать файл или канал в Java и скопировать то, что вы прочитали, в свою JTextArea.Другой вариант - переместить вашу DLL в собственный процесс, который вы начинаете с Java, затем читаете из стандартного вывода процесса и записываете в JTextArea.

SetStdHandle (ссылка на MSDN) позволит вам перенаправить стандартный вывод.

...