我想使用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目录:
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。
答案 0 :(得分:0)
我是UnmanagedExpirt NuGet包。这不好。
解决方案:
删除UnmanagedExport并使用DllExport NuGet包。说明:https://github.com/3F/DllExport