在Windows下开始使用JNI和C

 2023-01-20    347  

问题描述

我是Java学习的新手,第一次想开始JNI.我正在与Cygwin合作,我已经使用.java(Helloworld.java)扩展名创建了一个文件,如下所示:

class HelloWorld {
     private native void print();
     public static void main(String[] args) {
         new HelloWorld().print();
     }
     static {
         System.loadLibrary("HelloWorld");
     }
 }

然后,我通过命令行(javac Helloworld.java)编译文件,然后通过命令javah –jni Helloworld创建本机标头文件
然后还通过创建C文件为:

在Windows下开始使用JNI和C

来实现

#include <jni.h>
 #include <stdio.h>
 #include "HelloWorld.h"

 JNIEXPORT void JNICALL 
 Java_HelloWorld_print(JNIEnv *env, jobject obj)
 {
     printf("Hello World!\n");
     return;
 }

之后,我运行命令

Gcc –wall –g Helloworld.c –o hello

在cygwin中提供命令提示符中的消息

helloworld.c:1:17: fatal error: jni.h: No such file or directory
 compilation terminated.

如何运行以及设置执行文件的路径的过程是什么?请帮助我任何人.谢谢.

推荐答案

我想您还没有将JNI目录添加到Incluph Directory列表中,请检查 http://social.msdn.microsoft.com/forums/is/vclanguage/thread/thread/cd7f27f2d1d-f750-f750-f-f750-494c-494c-a3b2-7d41d41186cfee

其他推荐答案

假设您安装了JDK,则需要通知GCC JNI的包含目录:

-I$JAVA_HOME/../include

其中应将$JAVA_HOME设置为Java bin目录的父目录(例如,我的计算机上的/usr/lib/jvm/java-6-openjdk-amd64/jre).如果未设置,那么,如果您只找到jni.h标头居住的文件夹,则更简单.

我同意,从JNI开始学习Java是一项艰巨的任务,但我尊重您的决定.如果您时尚书籍,我建议您建议 core java卷a> and core java卷II .尤其是在后者的末尾,您可以找到对本机方法的详尽范围.

其他推荐答案

我在Windows上使用了mingw.将”; c:\ mingw \ bin \ \ \”添加到路径环境变量之后,我能够使用下面的命令从Windows命令提示符运行gcc.exe.

JNI.H文件位于Java Home中,包括文件夹.您可以使用Java_home环境变量或明确指定.

gcc -c -I"C:\Program Files\Java\jdk1.6.0_26\include" -I"C:\Program Files\Java\jdk1.6.0_26\include\win32" "S:\Accessibility\tools\src\test\java\com\accessibility\HelloWorld.c"

这创建了一个helloworld.o文件.

以上所述是小编给大家介绍的在Windows下开始使用JNI和C,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/26094.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。