所以在这里我试图从使用JNI从Java调用的C ++程序写入文件。
C ++包含最小值,取自here。
#include "JNIHeader.h"
#include <iostream>
#include <fstream>
using namespace std;
JNIEXPORT jlong JNICALL Java_myclass_writeSomeStuff(
JNIEnv *env, jclass clazz) {
ofstream myfile;
myfile.open("example.txt");
myfile << "Writing this to a file.\n";
myfile.close();
return 1;
}
当我运行代码时,出现以下错误:
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000180126ff7, pid=3648, tid=13192
#
# JRE version: Java(TM) SE Runtime Environment (8.0_60-b27) (build 1.8.0_60-b27)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.60-b23 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C [cygwin1.dll+0xe6ff7]
当调用其他非I / O方法时,JNI调用工作正常。
在Windows 7 64位计算机上使用G ++ 4.9.3和CYGWIN64进行编译。防病毒已关闭。
现在,我完全陷入困境(JNI很新),欢迎任何帮助!