我使用JNA从Java调用某些C++方法。一切正常。这个方法包含“cout”来打印一些东西。我的问题是,如果可以将这些打印从C++方法重定向到Java中的JFrame。在Java方法中,这很容易,但我不知道是否可以通过JNA调用方法。好吧,我知道这是一个很奇怪的问题,但我想知道是否有可能。提前致谢。JNA将STDOUT重定向到JFrame
0
A
回答
1
您需要将cout
流重定向到Java可以读取它的位置。您可以使用带有生产者/使用者指针的循环缓冲区,使用最新数据的Java回调或任何其他用于进程间通信的通用方法。它会可能更容易重定向到本机代码流测试,但没有理由不能将该本机代码翻译成JNA调用。
有关重定向stdout
的一种方法,请参阅Rerouting stdin and stdout from C。如果转储到文件,则可以从文件中读取Java。 JNA完全有能力致电freemen
。您可能需要查看实际值stdout
;查看您的系统的<stdio.h>
文件的定义。在OSX上,它是一个名为__stdout
的全球符号,其类型为FILE*
。在其他系统上,它是全局数组结构中元素的地址。
相关问题
- 1. Python。将stdout重定向到套接字
- 2. Tomcat将'stderr'内容重定向到'stdout'
- 3. 将stdin _and_ stdout重定向到管道
- 4. 只将stdout重定向到/ dev/null
- 5. 将subprocess.check_call的stdout重定向到函数?
- 6. 将stdout重定向到文件问题?
- 7. 尝试将stdout重定向到文件
- 8. 如何将STDOUT重定向到NSTextView?
- 9. 将子进程stderr重定向到stdout
- 10. 将stdout和stderr重定向到函数
- 11. D将stdout重定向到函数
- 12. 将Stdin和Stdout重定向到文件
- 13. 将log4j stdout重定向到InputStream
- 14. 将stdout重定向到套接字
- 15. Unix C - 将stdout重定向到pipe然后返回stdout
- 16. 在python中将stdout重定向为“无”
- 17. 将stdout重定向到日志文件,同时仍然打印到stdout?
- 18. 重定向到bash中的stdout
- 19. QProcess禁用stdout重定向
- 20. Processbuilder没有重定向StdOut
- 21. LLDB重定向劣势stdout
- 22. Java JNA将输出重定向到记录器
- 23. python - 打印到stdout并将输出重定向到文件
- 24. 如何在Java中将子进程stdout/stderr重定向到主进程stdout/stderr?
- 25. 将stdout和stderr重定向到单独的文件和屏幕
- 26. 将stdout C文件流重定向到缓冲区
- 27. 在Python的子进程/ Popen中将stdout重定向到stderr
- 28. 将stdout重定向到Java中的字符串
- 29. 将stdout重定向到文件显示错误的内容
- 30. 如何将stderr/stdout重定向到我在C++中的日志?
您需要将'cout'流重定向到Java可以读取它的位置。您可以使用带有生产者/使用者指针的循环缓冲区,使用最新数据的Java回调或任何其他用于进程间通信的通用方法。它可能更容易将本地代码中的流重定向到测试中,但没有理由不能将该本地代码翻译成JNA调用。 – technomage
请参阅http://stackoverflow.com/questions/584868/rerouting-stdin-and-stdout-from-c了解重定向'stdout'的一种方法。如果转储到文件,则可以从文件中读取Java。 JNA完全可以称呼'freopen'。 – technomage
您可能需要四处寻找'stdout'的实际值;了解其定义,请查看系统的''文件。在OSX上,它是一个全局符号,名为'__stdout',类型为'FILE *'。在其他系统上,它是全局'FILE'结构数组中元素的地址。 –
technomage