在使用vs编译JNI时,在c++的include里已经包含了\Java\jdk-1.8\include\win32\jni_md.h。但vs提示identifier "__int64" is undefined错误。
时间: 2023-07-21 18:44:06 浏览: 42
出现这个错误的原因是:在 Visual Studio 中使用 JNI 编写的 C++ 代码需要使用 C++11 或以上的标准,而 __int64 是 C++11 才引入的类型,因此会出现 undefined 的错误提示。
解决这个问题的方法如下:
1. 打开 VS,新建一个 C++ 项目。
2. 在项目属性中,选择 C/C++ -> 命令行,将以下命令加入到“附加选项”中:
```
/D"_CRT_SECURE_NO_WARNINGS" /EHsc /std:c++latest
```
其中,/std:c++latest 命令可以将编译器设置为使用 C++17 的标准。
3. 点击“应用”和“确定”保存设置,然后重新编译项目即可。
这样就可以解决 __int64 undefined 的问题,编译 JNI 程序成功。如果还有其他问题,可以查看编译器的错误提示,逐一解决。
相关问题
在使用vs编写JNI程序时,如何保证编译器和 JDK 版本匹配?
在使用 VS 编写 JNI 程序时,需要保证编译器和 JDK 版本匹配,可以按照以下步骤进行操作:
1. 打开 VS,新建一个 C++ 项目。
2. 在项目属性中,选择 C/C++ -> 命令行,将以下命令加入到“附加选项”中:
```
/I "JDK路径\include" /I "JDK路径\include\win32"
```
其中,“JDK路径”为 JDK 安装路径。
3. 在“链接器 -> 命令行”中添加以下命令:
```
/LIBPATH:"JDK路径\lib" jvm.lib
```
4. 点击“应用”和“确定”保存设置,然后重新编译项目即可。
以上步骤可以确保在 VS 中编写 JNI 程序时,使用的编译器和 JDK 版本匹配,从而避免出现编译错误。
如何配置java环境并验证Jni_test()的jni接口
在配置 Java 环境之前,需要确保已经安装了 JDK。安装完成后,按照以下步骤配置 Java 环境并验证 JNI 接口:
1. 配置 JAVA_HOME 环境变量。将 JDK 安装目录下的 bin 目录添加到 PATH 环境变量中。例如,如果 JDK 安装在 C:\Program Files\Java\jdk1.8.0_201 目录下,则可以设置 JAVA_HOME 环境变量为 C:\Program Files\Java\jdk1.8.0_201,将 C:\Program Files\Java\jdk1.8.0_201\bin 目录添加到 PATH 环境变量中。
2. 编译 C++ 代码并生成动态链接库。在命令行中进入 C++ 代码所在的目录,使用以下命令编译代码并生成动态链接库:
```
g++ -shared -o mylib.dll mylib.cpp -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32"
```
其中,mylib.dll 为生成的动态链接库名称,mylib.cpp 为 C++ 代码文件名称,-I 参数指定了 JNI 头文件的路径。
3. 将生成的动态链接库移动到 Java 项目的根目录。
4. 在 Java 代码中加载动态链接库并调用 JNI 接口。在 Java 代码中,使用 System.loadLibrary() 方法加载动态链接库,例如:
```java
System.loadLibrary("mylib");
```
然后,通过调用 JNI 接口来调用 C++ 代码,例如:
```java
int result = Jni_test.test();
```
5. 运行 Java 代码并验证 JNI 接口。编译并运行 Java 代码,如果输出了正确的结果,则说明 JNI 接口配置成功。