我正在尝试为JNI,Java Native Interface构建示例代码,如下面的教程所示:https://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html。当我尝试编译时出现问题。使用Cygwin中的gcc-3,可以使用-mno-cygwin标志来编译一个不依赖于Cygwin的dll的独立dll。但是,这已经在gcc-4中折旧了,这是我的编译。
所以当我将标志添加到我的Makefile中时:
gcc: error: unrecognized command line option ‘-mno-cygwin’
当我把它拿出来时,项目会编译,但在尝试运行程序时会返回此错误:
$ java HelloJNI
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000180103bd9, pid=8604, tid=11116
#
# JRE version: Java(TM) SE Runtime Environment (8.0_45-b15) (build 1.8.0_45-b15)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.45-b02 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C [cygwin1.dll+0xc3bd9]
这个输出告诉我它无法找到cygwin dll的。是否有一种方法可以编译Cygwin和gcc-4而不依赖于Cygwin dll?我想如果这里没有解决方案,我可能会回复到gcc-3。