如上图错误,代码如下:
string tmp0 ="-Djava.class.path=.;";
//cout<<tmp0<<endl;
string configTmp = tmp0 + m_p0 + ";" + m_p1;
//cout<<configTmp<<endl;
options[0].optionString = (char*)configTmp.c_str();
vm_args.version = JNI_VERSION_1_6; //设置版本号
vm_args.nOptions = 1;
vm_args.options = options;
vm_args.ignoreUnrecognized = JNI_TRUE;
//定义一个函数指针,下面用来指向JVM中的JNI_CreateJavaVM函数
typedef jint (WINAPI *PFunCreateJavaVM)(JavaVM **, void **, void *);
//const wchar_t szJvmPath[]=L"D:\\Java\\jdk1.8.0_131\\jre\\bin\\client\\jvm.dll";
int p2Len = m_p2.length();
WCHAR *szJvmPath = new WCHAR[p2Len+1];
MultiByteToWideChar(0, 0, m_p2.c_str(), -1, szJvmPath, p2Len+1);
cout<<szJvmPath<<endl;
hInstance = ::LoadLibrary(szJvmPath);
cout<<"成功"<<endl;
delete []szJvmPath;
szJvmPath = NULL;
if (hInstance == NULL)
{
cout<< "LoadLibrary False"<<endl;
cout<<::GetLastError()<<endl;
return false;
}
cout<<"成功1"<<endl;
//取得里面的JNI_CreateJavaVM函数指针
PFunCreateJavaVM funCreateJavaVM = (PFunCreateJavaVM)::GetProcAddress(hInstance, "JNI_CreateJavaVM");
cout<<"成功2"<<endl;
long status = (*funCreateJavaVM)(&jvm, (void**)&env, &vm_args);
//查找类,返回JAVA类的CLASS对象
//jclass cls = env->FindClass("D:\\javaOfWorkspace\\Test20170502\\src\\test\\c_call_j");
cout<<"成功3"<<endl;
cls = env->FindClass("test20170505/ParserDemo");
在: long status = (*funCreateJavaVM)(&jvm, (void**)&env, &vm_args);这一步出现错误,如果这个cpp不封装到dll中则能正常运行,封装以后就出现错误,其他配置都一样的,求大神解决。