ソース コードの zip ファイルは次のとおりです: http://cfile218.uf.daum.net/attach/254F2D4F5211EF93107910
、または下部に表示されるソース コード。
コンパイルして PC で実行しました。デバッグ モードとリリース モードの両方で問題なく動作しました。
しかし、別のPC(Windows XPがインストールされている)で実行しようとすると、「jvm.dll」がないというエラーが表示され、実行できません。
そのため、「 http://java.com/en/download/index.jsp 」というアドレスから Java をインストールして実行しました。ただし、それでも同じエラーが表示されました。
それは私の問題です....
JDK や MSVC を持たない他の通常の PC で実行するにはどうすればよいですか? 通常のユーザーは絶対に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;
}
}
## ================================ ##