jna / c#:java.lang.UnsatisfiedLinkError:查找函数'Test'时出错

时间:2018-06-18 14:58:53

标签: java c# jna

我想使用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#项目,它将3个文件放入项目bin \ Release目录:

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

JDK版本:1.8.171

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

当测试运行时,我得到了这个例外:

  

java.lang.UnsatisfiedLinkError:查找函数'Test'时出错:A   megadotteljárásnemtalálható。

     

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

我想念什么? 我使用Visual Studio Build Solution功能构建了dll。

1 个答案:

答案 0 :(得分:0)

我是UnmanagedExpirt NuGet包。这不好。

解决方案:

删除UnmanagedExport并使用DllExport NuGet包。说明:https://github.com/3F/DllExport