问题描述
当使用gcc对JNI的c文件进行编译时,需要包含JNI的jni.h文件。该文件位于$JAVA_HOME下的include文件夹,当使用
gcc -I"$JAVA_HOME\include" -I"$JAVA_HOME\include\win32" -shared -o 库文件名.dll 源文件.c
进行编译时,出现报错
源文件.c:2:10: fatal error: jni.h: No such file or directory
2 | #include <jni.h>
| ^~~~~~~
compilation terminated.
即include路径未生效。
解决方案
经过搜索发现,windows环境下,输出环境变量的命令为$env:环境变量名,于是尝试使用$env:JAVA_HOME替代$JAVA_HOME。该命令替换为
gcc -I"$env:JAVA_HOME\include" -I"$env:JAVA_HOME\include\win32" -shared -o 库文件名.dll 源文件.c
于是成功运行gcc编译,并且生成dll文件。