JNA或System.loadLibrary?

时间:2014-08-15 11:06:23

标签: java c++ jna

我在VS2013中使用此源代码(c ++)获得了为x64编译的.dll(与我当前的java安装相同):

namespace jdlltest
{
    int aconst()
    {
        return 108;
    }
}

现在我尝试使用JNA加载它:

interface jdll extends Library
{
    jdll inst=(jdll)Native.loadLibrary("jdll",jdll.class);
    int aconst();
}

即使我尝试将该功能移到命名空间之外,我也找不到找到方法的错误。我也尝试过使用System.loadLibrary()函数,但我不知道它是如何工作的,因为根本没有解释,所以这是我的尝试:

public class Main
{
    public native int aconst();

    public static void main(String[] string)
    {
        System.loadLibrary("jdll");
        new Main().aconst();
    }
}

当函数不在命名空间中时,这又完成了,它没有处理类似的错误。由于我是新手,我有多个问题:

  • 我如何让这个工作?
  • 如何从命名空间调用函数?
  • 这两种方式中的哪一种更好,在什么情况下?
  • 我可以使用java中的c ++类吗?

0 个答案:

没有答案