通过 jni 从 Java 调用时 C++ iostreams 不起作用

C++ iostreams not working when calling from Java through jni

提问人:Vili 提问时间:9/28/2020 更新时间:9/28/2020 访问量:121

问:

我有一个 c++ 库,它是通过 java-native-interface 从 java 端调用的。使用的java版本为AmazonCorretto_11.07,操作系统为Ubuntu 18.04。问题是我有一些日志记录代码在使用纯 c++ 时运行良好。但是,当通过 jni 调用代码时,当将某个数字插入流中时,iostream 会立即卡住。例如,以下代码可以正常打印。但是,以下代码仅打印第一个“hello world”,并在插入数字时“卡住”。我也尝试过 Boost 记录器,但行为是一样的。当使用纯 c++ 时,一切正常,但是当从 java AmazonCorretto11 通过 jni 调用时,问题会出现。std::cerr << "hello world " << std::endl std::cerr << "hello world " << 2.0 << "hello world" << std::endl

Java C++ java-native-interface iostream

评论

0赞 PaulMcKenzie 9/28/2020
你应该调查的第一件事是它卡在哪里,不是在高层次上,而是在代码的更深处。调试器可能会中断到“卡住”的程序,然后可以在其中查看调用堆栈,以到达代码中导致问题的位置。现在如何解决问题是另一回事了。

答: 暂无答案