我使用一个用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控制台。我的问题现在是为什么?
非常感谢。