java - Windows下JNI和C入门

标签 java java-native-interface jni4net jnienv

我是 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 文件来实现:

#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 目录添加到包含目录列表中,检查 http://social.msdn.microsoft.com/forums/is/vclanguage/thread/cd7f2d1d-f750-494c-a3b2-7d4186cfe51c了解详情。

关于java - Windows下JNI和C入门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11154020/

相关文章:

java - 如何在 Android 应用程序中打包 native 库?

java - 使用 C# 中的 jni4net 连接 JVM 时 Web 应用程序出错

java - 静态变量的ArrayList

java - 解析字符串到日期,时区偏移量完好无损

android - 当 hashmap > 512 时 JNI 溢出

java - 无法在 JNI 中编码为 UTF-8

java - 在 do while 循环中获取要从队列中删除的项目

java - 如何为 jenkins 作业设置 JDK 版本

java - (Lnet/sf/jni4net/inj/IClrProxy;)DLL 的 Java 中的 V 错误