You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用GCC编译JNI库时提示jni.h文件找不到的问题求助

解决GCC编译JNI库时"jni.h: No such file or directory"错误

以下是针对你遇到问题的具体解决方案:

1. 修正GCC包含路径参数

Windows平台下的GCC(如MinGW)使用-I作为包含路径参数,而非MSVC的/I。同时Windows命令行中环境变量引用要用%变量名%,而非Linux的${}或$()语法。

正确的编译命令示例:

# 直接指定JDK路径
gcc -I"D:\JDK 8\include" -I"D:\JDK 8\include\win32" -o lib.dll -shared NativeClass.cpp

# 使用JAVA_HOME环境变量
gcc -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" -o lib.dll -shared NativeClass.cpp

2. 修正JNI库的输出后缀

.jnilib是macOS平台的JNI库后缀,Windows平台的JNI库后缀应为.dll。同时要和Java代码中的loadLibrary参数对应:你的Java代码中调用System.loadLibrary("lib");,所以输出文件需命名为lib.dll。

3. 修复C++代码中的头文件错误

你的NativeClass.cpp存在两处头文件引用错误,会导致后续编译失败:

  • 将<stream>改为<iostream>(C++标准输入输出流的正确头文件)
  • 将<math>改为<cmath>(C++标准数学库的正确头文件)

修正后的NativeClass.cpp代码:

#include "NativeClass.h"
#include <iostream>
#include <cmath>
#include <string>
#include <jni.h>
using namespace std;

JNIEXPORT void JNICALL Java_NativeClass_addOtherMethod
  (JNIEnv *, jclass, jstring st1, jstring st2) {
   // some code
}

4. 验证GCC环境与文件权限

  • 打开新的命令行窗口,执行gcc --version,确认GCC能正常调用(需将GCC路径加入系统PATH)。
  • 确认D:\JDK 8\include\jni.h和D:\JDK 8\include\win32\jni_md.h文件存在,且当前用户对该路径有读取权限。

内容的提问来源于stack exchange,提问作者AskAnyQuestion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 06:35:51