使用JNA读取C ++ DLL的输出

时间:2016-02-24 11:15:13

标签: java c++ dll stdout jna

我有以下“系统”:

C ++ DLL - > C DLL - > Java与JNA

C ++ DLL是第三方DLL,我想使用JNA使用Java。但是JNA使用C比C ++更好用,所以我做了一个C包装器加载C ++ DLL(使用LoadLibrary),然后用Java加载JNA,我加载C DLL并访问C包装器导出的函数。

我想在Java中使用C ++ DLL可能有更好的设计,但这不是我的观点,它似乎有效。

我的问题是C ++ DLL在stdout和stderr上写入,但是C ++ DLL写入的消息不会显示在Java控制台中,尽管会显示由C包装器写入的消息。从Java读取C ++ DLL输出的解决方案是什么?

到目前为止,我尝试在C ++中创建一个“测试包装器”,它使用LoadLibrary直接加载C ++ DLL并使用其功能,然后正确显示C ++ DLL的输出。

然后我尝试调用freopen()将stdout重定向到C包装器中的文件。当使用“测试包装器”时,C ++ DLL的输出重定向到文件,但是当从JNA调用C包装器时,只有C包装器和Java的输出被重定向到文件(C ++ DLL的输出)被忽略了。)

C ++ DLL是用MSVC 2013和C DLL包装器编译的。我正在使用Windows 7。

0 个答案:

没有答案
相关问题