Вот zip-файл исходного кода: http://cfile218.uf.daum.net/attach/254F2D4F5211EF93107910
, или видимый исходный код внизу.
Я только что скомпилировал и запустил его на своем ПК: он отлично работал как в режиме отладки, так и в режиме выпуска.
Однако, если я попытаюсь запустить его на другом ПК (на котором установлена Windows XP), появится сообщение об ошибке, в котором говорится, что у меня нет «jvm.dll», поэтому он не может его запустить.
Поэтому я установил java с адреса "http://java.com/en/download/index.jsp" и запустил его. Тем не менее, он все равно сказал ту же ошибку.
Это моя проблема....
Как мне заставить его работать на других обычных ПК, на которых нет JDK или MSVC? потому что обычные пользователи определенно не владеют JDK.
## ================================ ##
// it is the c++ code that starts JVM and run java source code...
#include <iostream>
#include <windows.h>
#include <jni.h>
#pragma comment(lib, "jvm.lib")
using namespace std;
void main(){
cout<<"JVM Create Start!!"<<endl;
// JavaVM create & JVM environment setting start
JavaVMOption options[1];
JavaVMInitArgs vm_args;
JNIEnv *env;
JavaVM *jvm;
long status;
options[0].optionString = "-Djava.class.path=.";
memset(&vm_args, 0, sizeof(vm_args));
vm_args.version = JNI_VERSION_1_6;
vm_args.nOptions = 1;
vm_args.options = options;
status = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
// JavaVM create & JVM environment setting end
cout<<"JVM Operating......."<<endl;
cout<<"\n10+20?\n"<<endl;
jclass cls;
jmethodID mid;
jobject obj;
int staticresult=0;
int result=0;
if(status != JNI_ERR)
{
cls = env->FindClass("FirstJavaEx");
if(cls != 0)
{
//
// Use the static method start
//
cout<<"\t'static'start calling method" << endl;
mid = env->GetStaticMethodID(cls, "staticAdd", "(II)I");
if (mid != 0)
{
staticresult = env->CallStaticIntMethod(cls, mid, 10, 20);
cout<<"\t'static'result: " << staticresult << endl;
}
else
{
printf("mid error\n");
return;
}
//
// Use the static method end
//
//
//Create the Instance of InvokeFirstEX Class start
//
cout<<"\n\tInvokeFirstEx create instance" << endl;
jmethodID cls_constructor = env->GetMethodID(cls, "<init>", "()V");
if (cls_constructor != 0) {
obj = env->NewObject(cls, cls_constructor, "()V");
cout<<"\t\tstart calling method" << endl;
mid = env->GetMethodID(cls, "AddFunc", "(II)I");
if (mid != 0)
{
result = env->CallIntMethod(obj, mid, 10, 20);
cout<<"\t\tresult: " << result << endl;
}
else
{
printf("mid error\n");
return;
}
}
}
else
{
printf("Can't find class\n");
return;
}
jvm->DestroyJavaVM();
cout<<"\nJVM Destroyed!!"<<endl;
}
}
## ================================ ##