【问题标题】:Cannot find jni.h找不到 jni.h
【发布时间】:2015-11-10 23:26:26
【问题描述】:

我正在尝试设置一个 JNI 演示示例,但在 Windows 操作系统上导出库时卡住了。

根据this教程,应该执行以下命令:

gcc -o libctest.so -shared -I/path/to/jdk/headers ctest.c -lc

其中/path/to/jdk/headers 指的是包含jni.h 的目录。

这是调用命令的方式:

gcc -o ctest.dll -shared -I/"C:/Program Files/Java/jdk1.8.0_45/include" ctest.c -lc

结果是:

jni.h: no such file or directory.
include jni.h

我查看了thisthis,这似乎暗示了我所做的事情。

代码:

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

JNIEXPORT void JNICALL Java_HelloWorld_helloFromC
  (JNIEnv * env, jobject jobj)
{
    printf("Hello from C!\n");
}

如何解决此错误?

【问题讨论】:

  • 为什么不在驱动器中搜索jni.h 文件?要么你会在其他位置找到它,要么你不会发现它意味着你的 JDK 没有正确安装。
  • jni.h 确实在那里,这让我很困惑。

标签: java c gcc java-native-interface


【解决方案1】:

您是否尝试过:

gcc -o ctest.dll -shared -I"C:\Program Files\Java\jdk1.8.0_45\include" ctest.c -lc

请注意,-I 之后的斜杠字符不再存在,并且分隔符设置为反斜杠(Windows 分隔符)。

【讨论】:

  • 哇,我真傻 :) 那确实让我绕过了那个错误。它因缺少 jndi_md.h 而爆炸,但设法通过另一个 -I 到相关目录来解决它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-28
  • 2016-04-15
  • 1970-01-01
  • 2017-07-22
  • 2018-05-13
  • 1970-01-01
  • 2015-02-14
相关资源
最近更新 更多