c# - 使用 JNA 访问从 Java 编译为 native 代码的 C# 方法

标签 c# java jna

我有一个 C# 类,其中一个方法编译为 native 代码,我想使用 JNA 从 Java 方法调用它.该类作为 dll 打包在名为 DataGrabber.dll 的文件中。 这是 C# 代码:

namespace GrabberLibrary {
    public class Grabber {
        public void GetData(String projectId, String importURI){
            //implementation code
        }
    }
}

我已经按照建议实现了接口(interface):

import com.sun.jna.Library;
import com.sun.jna.Native;

public interface Grabber extends Library{
    Grabber INSTANCE = (Grabber)Native.loadLibrary("Grabber", Grabber.class);

    void GetData(String projectId, String importURI);
}

然后当我像这样从 Java 中的 main 方法调用此 GetData 方法时:

System.setProperty("jna.library.path", "C:\\dlls");
Grabber sgl = Grabber.INSTANCE;
sgl.GetData("123", "http://localhost/test");

我得到以下异常:

java.lang.UnsatisfiedLinkError: Unable to load library 'Grabber': The specified module could not be found.

另一方面,如果我输入与 C# 代码 (DataGrabber) 中定义的命名空间相同的 dll 名称,我会得到:

java.lang.UnsatisfiedLinkError: Error looking up function 'GetData': The specified procedure could not be found.

如何调用 GetData 方法?

最佳答案

我认为你试图在错误的地方加载 DLL 文件,它应该在 main 方法中。 请看这里:http://aboulton.blogspot.com/2012/07/netbeans-and-java-native-access.html

关于c# - 使用 JNA 访问从 Java 编译为 native 代码的 C# 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8296837/

相关文章:

c# - Xamarin Forms Span 保留空白

java - GPS定位应用首次运行,但再次尝试后,找不到我的经度和纬度

java - RandomAccessBuffer 的性能改进

使用 JNA 调用 Win32 WaitForSingleObject() 时,Java 计时器不运行

c# - 服务导致SCM错误 "reported an invalid current state 0"

c# - HTML Agility Pack 从输入中剥离自闭合标签

Java 带极性的百分比差异逻辑

java - JNA 内存泄漏 - 如何修复?

java - 使用头文件中定义的常量

c# - 如何将 admob 广告加载到 unity 5 项目中?