调用C#dll后Java jna异常_访问#冲突

调用C#dll后Java jna异常_访问#冲突,c#,database-connection,user-defined-functions,access-violation,jna,C#,Database Connection,User Defined Functions,Access Violation,Jna,我使用JNA调用一个3。用C#编写的party提供的.dll。这是我使用dll的代码: public class Main{ public interface AirtrackDLL extends Library{ AirtrackDLL INSTANCE = (AirtrackDLL)Native.loadLibrary("atproc32.dll",AirtrackDLL.class); static interface TestPing extends Ca

我使用JNA调用一个3。用C#编写的party提供的.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(short param)-函数将正确执行。TestDBConnection()-函数给出以下异常:


不带回调的结果:30 带回调的结果:80

Java运行时环境检测到一个致命错误: pc=0x05cae065、pid=4940、tid=1464时的异常访问(0xc0000005)

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

无法写入核心转储。默认情况下,在客户端版本的Windows上不启用小型转储

包含详细信息的错误报告文件另存为: D:\entwicklungtools\Java\workspace\AFPS\u Airport\u Service\hs\u err\u pid4940.log

如果您想提交错误报告,请访问: 崩溃发生在Java虚拟机外部的本机代码中

有关报告错误的位置,请参见问题框。
提前感谢您的帮助。

请出示本机声明。谢谢您的回复@technomage。我没有dll代码。我只是有dll需要和提供的方法和参数。在本例中,是在接口中定义的函数(TestPing(short param)和TestDBConnection()。函数TestPing(short param)运行时没有问题……@technomage请尝试并获得它。如果可以的话,请不要使用shore…让我们试试。如果您有一个头文件,它将包含本机函数的声明,这些声明表示编译器(以及JNA)需要的基本信息,以便正确地将调用映射到二进制DLL中。Hey@technomage感谢您的帮助。我们解决了这个问题。我调用的dll是C#。C++调用C++并返回值。难怪回到java世界后指针就不起作用了。如何解决这些问题?