Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JNI:vcvars32.bat给我;无法打开包含文件:';stdio.h';:没有这样的文件或目录;_Java_C_Visual Studio_Java Native Interface - Fatal编程技术网

Java JNI:vcvars32.bat给我;无法打开包含文件:';stdio.h';:没有这样的文件或目录;

Java JNI:vcvars32.bat给我;无法打开包含文件:';stdio.h';:没有这样的文件或目录;,java,c,visual-studio,java-native-interface,Java,C,Visual Studio,Java Native Interface,我正在尝试使用JNI将.C代码与我的Java项目集成 在visual studio 2017中尝试使用vcvars32.bat生成.dll文件时,它会显示一条错误消息,提示: C:\Program Files\Java\jdk1.8.0\u 151\include\jni.h(39):致命错误C1083:无法打开include文件:“stdio.h”:没有这样的文件或目录 我在我的C代码中删除了stdio.h库的包含,但没有任何帮助 我的命令是: “cl-I”C:\Program Files\J

我正在尝试使用JNI将.C代码与我的Java项目集成

在visual studio 2017中尝试使用vcvars32.bat生成.dll文件时,它会显示一条错误消息,提示:

C:\Program Files\Java\jdk1.8.0\u 151\include\jni.h(39):致命错误C1083:无法打开include文件:“stdio.h”:没有这样的文件或目录

我在我的C代码中删除了stdio.h库的包含,但没有任何帮助

我的命令是:


“cl-I”C:\Program Files\Java\jdk1.8.0\u 151\include“-I”C:\Program Files\Java\jdk1.8.0\u 151\include\win32“-LD”Factorial.C“-Fe”Factorial.dll”

经过一段时间的搜索并失败后,我不得不用VS13 vsvars32生成它。请注意,VSVAR不是生成32位dll的VS17的VCVAR,因为我的平台是64位的,所以我必须安装并切换到32位JVM,问题得到解决。

您确定JVM是32位的吗?在2018年,这听起来很奇怪,也就是说,在大多数情况下,你需要vcvars64.batI尝试了vcvars64.bat、vcvarsall.bat甚至VsDevCmd.bat,但不幸的是它没有帮助。好了,让我们制作一些简单的nmake文件,然后检查:制作一个类似于
链接:compile ln/DLL/LTCG/LIBPATH的文件:“C:\Program Files\Java\jdk1.8.0\u 151\lib”OUT:factorial.dll msvcrt.lib kernel32.lib jvm.lib factorial.obj编译:cl/c/nologo/GL/Zl factorial.c/FoFactorial.obj
并使用nmake构建它。Nmake手册中,我删除了C代码中包含stdio.h库的部分,但没有任何帮助。如果没有标准的C头,您将无法编译32位或64位。您的Visual Studio安装可能有问题。您用来设置环境的
vcvars32.bat
文件的完整路径是什么?你能试试另一个吗?你能在VisualStudioGUI中编译一个简单的“Hello World!”C程序,其中包含
#include
?我也可以用VS15来实现。