调用C#dll后的Java jna EXCEPTION_ACCESS_VIOLATION

时间:2013-11-12 10:01:16

标签: c# database-connection user-defined-functions access-violation jna

我使用JNA来调用3.方提供的.dll用C#编写的.dll。这是我使用dll的代码:

public class Main{
public interface AirtrackDLL extends Library{
    AirtrackDLL INSTANCE = 
    (AirtrackDLL)Native.loadLibrary("atproc32.dll",AirtrackDLL.class);  
    static interface TestPing extends Callback{
        short invoke(short param);
    }   
    static interface TestDBConnection extends Callback{
        short invoke();
    }
    public short TestPing(TestPing callbackparam);
    public short TestPing(short param);
    public short TestDBConnection(TestDBConnection callbackparam);  
}
public static void main(String[] args) {
    AirtrackDLL dll = AirtrackDLL.INSTANCE;
System.out.println("Result ohne callback : " + dll.TestPing((short)3));
short res = dll.TestPing(new AirtrackDLL.TestPing() {
    @Override
    public short invoke(short param) {
        System.out.println(param);
        return (short)0;
    }
});
System.out.println("Result mit callback : " + res);
short res1 = dll.TestDBConnection(new AirtrackDLL.TestDBConnection() {      
@Override
        public short invoke() {
        // TODO Auto-generated method stub
    return 0;
    }
});
System.out.println(res1);
}
}

当我运行代码时,TestPing(短参数) - 函数将被正确执行。 TestDBConnection() - 函数给出以下异常:


没有回调的结果:30 回调结果:80

Java运行时环境检测到致命错误: pc = 0x05cae065的EXCEPTION_ACCESS_VIOLATION(0xc0000005),pid = 4940,tid = 1464

JRE版本:7.0_25-b17 Java VM:Java HotSpot(TM)客户端VM(23.25-b01混合模式,共享windows-x86) 有问题的框架: C [atproc32.dll + 0x27e065]

无法编写核心转储。默认情况下,在Windows的客户端版本

上未启用小型转储

包含更多信息的错误报告文件保存为: d:\ Entwicklungstools \爪哇\工作空间\ AFPS_Airport_Service \ hs_err_pid4940.log

如果您想提交错误报告,请访问: http://bugreport.sun.com/bugreport/crash.jsp 崩溃发生在Java虚拟机之外的本机代码中。

查看有问题的框架,了解报告错误的位置。

提前感谢您的帮助。

0 个答案:

没有答案