将dll stdout传递给java控制台

时间:2013-12-21 16:24:37

标签: java c++ dll output

我使用一个用c ++编程的dll,它通过cout或printf输出一些。在我的Java应用程序中,我通过JNA加载此DLL。现在我有Java Applet和Java Web Start应用程序。对于调试(java程序以dll结尾结束)我想从dll读取输出,但我在java控制台中没有得到任何输出。 如何在java控制台,文件,命令行,where-等等中获取输出?对不起,我不是c ++专家,更像是新手。

编辑1: 让我通过一个例子更详细地解释一下:

DLL文件的代码

PrintString.h

#include <windows.h>
#include <stdint.h>

using namespace std;

namespace JNATEST
{
    class debugging
    {
    public:
        static __declspec(dllexport) void getString();
    };
}

PrintString.cpp

#include "stdafx.h"
#include <iostream>
#include "PrintString.h"

using namespace JNATEST;
using namespace std;

void debugging::getString()
{
    cout << "test" << endl;
    printf( "hello" );
}

比Java代码如下: jna接口DLLMapping.java:

public interface DLLMapping extends Library{
    public void getString();
}

主要java程序:

public class JNATest{
    static{
        // load path to jna.library.path
        System.setProperty("jna.library.path", (System.getProperty("java.io.tmpdir")));
        // unzip dll to that path
        .... (not important for that case)
    }

    public static void main(String[] args) {

        DLLMapping clib = (DLLMapping)Native.loadLibrary("PrintString", DLLMapping.class);
        clib.getString();
    }
}

我现在的问题是,就我在日食中尝试而言,一切正常。但是当我将它用作applet或jnlp时,我看到所有内容都已加载但我没有得到任何结果到java控制台。我的问题现在是为什么?

非常感谢。

0 个答案:

没有答案