[笔记] 用C++通过JavaVM调用jar包
2011-04-30 01:06
519 查看
看了半天文档,Java的swing写个List要那么多代码...
而后台基础都用Java写好了...
想移植到C++上,咋办呢?
然后再把工程属性里的 附加包含目录 添加:
....../jdk1.6.0_25/include
....../jdk1.6.0_25/include/win32
其他对于Java里各种操作的C++实现参见JNI就好了....
而后台基础都用Java写好了...
想移植到C++上,咋办呢?
#include "jni.h" #include "windows.h" #include "stdafx.h" typedef jint (WINAPI *_CreateJavaVM)(JavaVM **, void **, void *); int _tmain(int argc, _TCHAR* argv[]) { int res; JavaVMInitArgs vm_args; JavaVMOption options[3]; JavaVM *jvm; JNIEnv *env; /*设置初始化参数*/ options[0].optionString = "-Djava.compiler=NONE"; //Disabled JIT options[1].optionString = "-Djava.class.path=.;hello.jar"; options[2].optionString = "-verbose:NONE"; vm_args.version = JNI_VERSION_1_6; vm_args.nOptions = 3; vm_args.options = options; vm_args.ignoreUnrecognized = JNI_TRUE; // Load jvm.dll HINSTANCE hInstance = LoadLibrary(L"C://Program Files//Java//jre6//bin//client//jvm.dll"); if (hInstance == NULL) return false; _CreateJavaVM m_CreateJavaVM = (_CreateJavaVM)GetProcAddress(hInstance, "JNI_CreateJavaVM"); res = (*m_CreateJavaVM)(&jvm, (void**)&env, &vm_args); if (res < 0) return -1; // Find the class jclass HelloClass = env->FindClass("app/Hello"); // Find the main method id jmethodID Hello_main = env-> GetStaticMethodID(HelloClass, "main", "([Ljava/lang/String;)V"); // Call the main method. env->CallStaticVoidMethod(HelloClass, Hello_main); jvm->DestroyJavaVM(); FreeLibrary(hInstance); return 0; }
然后再把工程属性里的 附加包含目录 添加:
....../jdk1.6.0_25/include
....../jdk1.6.0_25/include/win32
其他对于Java里各种操作的C++实现参见JNI就好了....
相关文章推荐
- 关于C++调用jar包,在创建虚拟机时使用JNI_CreateJavaVM调用失败返回-1的问题
- cocos2d-x笔记5: 通过jni实现C++调用Java
- Java通过JNI调用C++程序
- c/c++ native 层 通过 JNI API 调用 java 层 的AudioTrack 来播放 音频文件
- unity调用Android通过编译 java jar包出现问题解决和简单支付流程
- Java学习之通过JNI调用C/C++编写的dll链接库(图文教程)
- 通过JNI实现Java和C++的相互调用
- AndroidJNI 通过C++调用JAVA
- 在eclipse下,JAVA通过JNI调用C++方法的简单例子(非android)
- 通过JNI实现Java和C++的相互调用
- JAVA通过JNI调用C++程序实践
- 通过JNI实现Java和C++的相互调用(转)
- 通过JNI实现Java和C++的相互调用(转)
- JAVA程序通过JNI调用C/C++库
- Java通过JNI调用C++程序
- Java通过JNI调用本地C/C++程序--常用示例
- [安卓开发笔记二]android Studio通过jni调用C++代码
- Android开发 通过JNI实现JAVA与C/C++程序间的调用和回调
- java中通过ndk调用c/c++ 例子,详细解释
- Java通过JNI调用C++程序