Java native interface 加载jni时jre崩溃

Java native interface 加载jni时jre崩溃,java-native-interface,Java Native Interface,我已经编译了一个用于jni的测试dll。它实际上是完全空的,除了#include。它编译得很好。我把其他的都注释掉了,试着让它工作起来。我使用了gcc cygwin版本和-shared和eclipse 这是加载库的类: static { final File f= new File(new File("res"), "mandc.dll"); System.out.println(f.exists()); System.load(f.getAbsolutePath());

我已经编译了一个用于jni的测试dll。它实际上是完全空的,除了#include。它编译得很好。我把其他的都注释掉了,试着让它工作起来。我使用了gcc cygwin版本和-shared和eclipse

这是加载库的类:

static
{
    final File f= new File(new File("res"), "mandc.dll");
    System.out.println(f.exists());
    System.load(f.getAbsolutePath());
    System.out.println("Loaded!");
}

//  public static native long mand(final double cx, final double cy,
//          final double jx, final double jy, long iter);

public static native void mand();
true是最后打印的内容,证明错误在true和loaded之间!。 如果我在eclipse中运行,会打印两条错误消息,但internet不知道它们是什么

信息:

2 [main] javaw <random number here> exception::handle: Exception: STATUS_STACK_OVERFLOW
667 [main] javaw <random number here> open_stackdumpfile: Dumping stack trace to javaw.exe.stackdump

当我从wikipedia页面运行示例时,实验也失败了。它也会以同样的方式失败。

问题已修复。我将工具链从cygwin gcc切换到mingw gcc。为了支持这一点,我必须从cygwin安装程序中安装额外的mingw软件包

我猜cygwin与java不兼容。如果有更好的错误消息,我们将不胜感激

Exception: STATUS_STACK_OVERFLOW at eip=61157C62
eax=0001C038 ebx=49E0834C ecx=49DE2ABC edx=49E27DB4 esi=49E07B2C edi=49E27B34
ebp=49E07ACC esp=49E07AB4 program=C:\Program Files\Java\jre7\bin\javaw.exe, pid 2688, thread main
cs=001B ds=0023 es=0023 fs=003B gs=0000 ss=0023
Stack trace:
Frame     Function  Args
49E07ACC  61157C62  (49E2D000, 49E27B3A, 49E27DB4, 00000008)
49E07AFC  6106C0B5  (49E27B3A, 49E27D78, 00000008, 49E27B2C)
49E27B4C  6106C6D1  (49E27B70, 00000C90, 00000000, 49E27DB4)
49E27DEC  6100584E  (49E27EBC, 611FBAF0, 611FBAEC, 49E27E2C)
49E27E3C  61005D28  (49E27FC3, 611FBAF0, 611FBAEC, 00000001)
49E2801C  61006F07  (00000000, 49E28058, 61006990, 49E2B268)
End of stack trace