【问题标题】:jna/c#: java.lang.UnsatisfiedLinkError: Error looking up function 'Test'jna/c#:java.lang.UnsatisfiedLinkError:查找函数“测试”时出错
【发布时间】:2018-06-18 14:58:52
【问题描述】:

我想使用 C# dll 函数。

c#

using RGiesecke.DllExport;

namespace dllExample
{
    public class DllExample
    {
        [RGiesecke.DllExport.DllExport]
        public static string Test(string id)
        {
            return "done" + id;
        }
    }
}

java

@Test
public void jnaTest() {
    DllExample dllExample = Native.loadLibrary("c:\\Users\\IEUser\\RiderProjects\\dllExample\\dllExample\\bin\\Release\\RGiesecke.DllExport.Metadata.dll", DllExample.class);
    Assert.assertEquals("doneabc", dllExample.Test("abc"));
}

public interface DllExample extends Library{
    String Test(String id);
}

我用 Visual Studio 构建了 c# 项目,它在项目 bin\Release 目录中生成了 3 个文件:

  • dllExample.dll
  • dllExample.pdb
  • RGiesecke.DllExport.Metadata.dll

JDK版本:1.8.171

jna:net.java.dev.jna:jna:4.5.1

当测试运行时,我得到这个异常:

java.lang.UnsatisfiedLinkError:查找函数“测试”时出错:A megadott eljárás nem található。

在 com.sun.jna.Function.(Function.java:245) 在 com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:566) 在 com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:542) 在 com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:528) 在 com.sun.jna.Library$Handler.invoke(Library.java:228) 在 com.sun.proxy.$Proxy5.Test(Unknown Source) at hu.kdiv.keaesz.sign.DirectMSCAPITest.jnaTest(DirectMSCAPITest.java:149)

我错过了什么? 我是用 Visual Studio 构建解决方案功能构建 dll 的。

【问题讨论】:

    标签: java c# jna


    【解决方案1】:

    我是 UnmanagedExpirt NuGet 包。这不好。

    解决方案:

    删除 UnmanagedExport 并使用 DllExport NuGet 包。此处描述:https://github.com/3F/DllExport

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多