首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JNI Demo HelloWorld

JNI Demo HelloWorld
EN

Stack Overflow用户
提问于 2016-09-12 15:30:21
回答 1查看 579关注 0票数 2

这里是我的第一个JNI,demo.My os是win7,我的ide是IDEA。

创建Java文件HelloWorld

HelloWold.java:

代码语言:javascript
复制
public class HelloWorld {
        public static native void sayHello();

        public static void main(String[] args) {
           new HelloWorld().sayHello();
        }

        static {
            System.load("D:\\JavaJNIDemo\\jni\\helloworld.dll");
        }

}

Javah生成.h文件

com_uniquestudio_coxier_HelloWorld.h:

代码语言:javascript
复制
#include <jni.h>
#ifndef _Included_com_uniquestudio_coxier_HelloWorld
#define _Included_com_uniquestudio_coxier_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_uniquestudio_coxier_HelloWorld
 * Method:    sayHello
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_com_uniquestudio_coxier_HelloWorld_sayHello
  (JNIEnv *, jclass);

#ifdef __cplusplus
}
#endif
#endif

新的a-c文件

HelloWorld.c.c:

代码语言:javascript
复制
#include <jni.h>
#include <stdio.h>
#include "com_uniquestudio_coxier_HelloWorld.h"


JNIEXPORT void JNICALL Java_com_uniquestudio_coxier_HelloWorld_sayHello
  (JNIEnv *env, jclass object){
   printf("Hello World!\n");
   return;
  }

在我的win7上生成dll

我遇到了一个问题:

未知类型名称"__int64“在jni_md.h

我用解决了这个问题

然后我用:

代码语言:javascript
复制
D:\JavaJNIDemo\jni>gcc -Wl,--add-stdcall-alias -I"%JAVA_HOME%\include" -I"%JAVA_
HOME%\include\win32" -shared -o helloworld.dll HelloWorld.c

错误

当我运行程序时,我得到以下错误: error:

代码语言:javascript
复制
A fatal error has been detected by the Java Runtime Environment:

EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000180105979, pid=6776, tid=7040

JRE version: Java(TM) SE Runtime Environment (8.0_20-b26) (build 1.8.0_20-b26)
Java VM: Java HotSpot(TM) 64-Bit Server VM (25.20-b23 mixed mode windows-amd64 compressed oops)
Problematic frame:
C  [cygwin1.dll+0xc5979]

Failed to write core dump. Minidumps are not enabled by default on client versions of Windows

An error report file with more information is saved as:
D:\JavaJNIDemo\hs_err_pid6776.log
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-13 01:39:37

我将编译器更改为MinGW64.Then它可以工作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39453904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档