【发布时间】: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 的。
【问题讨论】: