JNI实现Java与C++相互调用

JNI实现Java与C++相互调用

ID:39551638

大小:57.00 KB

页数:9页

时间:2019-07-06

JNI实现Java与C++相互调用_第1页
JNI实现Java与C++相互调用_第2页
JNI实现Java与C++相互调用_第3页
JNI实现Java与C++相互调用_第4页
JNI实现Java与C++相互调用_第5页
资源描述:

《JNI实现Java与C++相互调用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、通过JNI实现Java和C++的相互调用 通过JNI实现Java和C++的相互调用一、从Java调用C++的DLL1.   创建Java文件创建名为TestNative的Java文件,注意包名。packageorg.druze.test;publicclassTestNative{   publicnativevoidsayHello();   publicvoidsayHello2(){      System.out.println("SayHelloFromJava");   }}如代码所示,对于say

2、Hello方法声明为native,这一部分将由C++的动态库来实现。2.   生成class文件使用javacorg/druze/test/TestNative.java生成class文件注意:执行该命令在org所在目录执行。3.   使用javah命令生成相应的C++头文件使用javahorg.druze.test.TestNative生成名为org_druze_test_TestNative.h的头文件注意:执行该命令在org所在目录执行。该头文件的内容如下:/*DONOTEDITTHISFILE-iti

3、smachinegenerated*/#include/*Headerforclassorg_druze_test_TestNative*/#ifndef_Included_org_druze_test_TestNative#define_Included_org_druze_test_TestNative#ifdef__cplusplusextern"C"{#endif/* *Class:    org_druze_test_TestNative *Method:   sayHello *Si

4、gnature:()V */JNIEXPORTvoidJNICALLJava_org_druze_test_TestNative_sayHello (JNIEnv*,jobject);#ifdef__cplusplus}#endif#endif4.   创建C++解决方案此处以VS2008为例。新建一个VC++的Win32项目,选择如图所示的控制台应用程序。项目名称为NativeCode。点击确定后,再点击下一步,出现该页面,应用程序类型选择DLL,附加选项选择DLL5.   创建号工程之后,将org_dru

5、ze_test_TestNative.h导入到工程里面,并创建名为source.cpp的源代码,内容如下:#include"org_druze_test_TestNative.h"  #include  usingnamespacestd;  JNIEXPORTvoidJNICALLJava_org_druze_test_TestNative_sayHello(JNIEnv*env,jobjectobj){     cout<<"HelloWorld!"<

6、具->选项->项目和解决方案->VC++目录菜单中,平台选择Win32,选择“显示以下内容的目录”为“包含文件”,导入jni.h和jni_md.h的路径。7.   编译,生成NativeCode.dll,并将其copy到环境变量PATH的路径下。8.   修改TestNative.javapackageorg.druze.test;publicclassTestNative{   publicnativevoidsayHello();   publicstaticvoidmain(String[]args){

7、      //加载动态连接库DLL,如果没有找到的话,则会在运行时报错        System.loadLibrary("NativeCode");                 TestNativetnt=newTestNative();                     tnt.sayHello();     }   publicvoidsayHello2(){      System.out.println("SayHelloFromJava");   }}运行,显示“HelloWorld

8、!” 9.   注意头文件jni.h和jni_md.h可以直接导入到工程中也可以。10.注意NativeCode.dll必须放置在java命令能访问的路径中。二、从C++调用Java1.创建TestNative2.Javapackageorg.druze.test;publicclassTestNative2{   publicstaticvoidtestPrint(){      System.o

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。