欢迎来到天天文库
浏览记录
ID:22376204
大小:60.50 KB
页数:7页
时间:2018-10-28
《jni使用技巧点滴(二)--.》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、JNI使用技巧点滴(二)>>.背景上一讲我们介绍了JNI的基本概念和基本用法。现在介绍复杂一点的例子,用JNI调用其他工具生成的DLL,实现某个特定的功能。在这里我们将用VC编写一个DLL,供JAVA调用。VC编写简单DLL这个DLL实现一个简单的字符串传递,然后弹出一个消息框,显示所传递的字符串,同时将所传递的字符串变成小写,返回给JAVA程序。即JAVA12345678910...下一页>>[这篇文章来自..,]程序和VC编写的DLL实现字符串互传。打开VC集成开发环境,选择file->neal"style="MARGIN:0cm0cm0pt;TEXT-INDENT:21.75
2、pt">在VJString.h头文件里面声明两个方法,示列代码如下:………..#include"resource.h"//mainsymbols上一页12345678910...下一页>>[这篇文章来自..,]这是VC生成的代码//---------addbynormalnotebook8/9/2004start----------//voidshoal"style="MARGIN:0cm0cm0pt;TEXT-INDENT:21pt;TEXT-ALIGN:left;mso-layout-grid-align:none"align="left">voidcToJavaStr(cha
3、r*context);//---------addbynormalnotebook8/9/2004end----------//…………..上一页12345678910...下一页>>[这篇文章来自..,]然后在VJString.cpp里面加入这两个方法的实现。//---------addbynormalnotebook8/9/2004start----------//voidshoal"style="MARGIN:0cm0cm0pt;TEXT-INDENT:21pt;TEXT-ALIGN:left;mso-layout-grid-align:none"align="left">{
4、CStringstrText,strCaption;strText.Format(_T("%s"),text);st上一页12345678910...下一页>>[这篇文章来自..,]rCaption.Format(_T("%s"),caption);MessageBox(NULL,text,caption,MB_OK);}voidcToJavaStr(char*context){CStringstrContext;strContext.Format("%s",context);strContext.MakeLower上一页12345678910...下一页>>[这篇文章
5、来自..,]();strcpy(context,(LPCTSTR)strContext);}//---------addbynormalnotebook8/9/2004end----------//到这里为止,DLL部分就基本差不多了。大家也许很奇怪,为什么不用CString做参数,为什么要用最原始的char*。原因是这样的:在写JNI对应的C实现部分时,因为那是在C/C++的编译环境下,根本不认识上一页12345678910...下一页>>[这篇文章来自..,]CString这个MFC类。还应该在VJString.def文件里面做导出函数的说明,示列代码如下:EXPORTS;Ex
6、plicitexportscangohereshoal"style="MARGIN:0cm0cm0pt;TEXT-INDENT:21.75pt">cToJavaStr现在就可以开始编译,链接它。然后它会生成一个VJString.dll这个DLL文件,同时也会生成一个VJString.lib这个文件,供调用这个DLL的程序使用(那个调用程序是静态链接这个dll上一页12345678910...下一页>>[这篇文章来自..,])。把dll和lib文件拷贝到一个文件夹下。我们此时还可以做一个.h文件,供调用者使用。在这里我们将导出两个方法,在这个文件夹下生成一个VJString.h的头文
7、件。如果调用程序是动态链接,可以不要.lib和.h文件。VJString.h头文件的内容如下:_declspec(dllexport)voidshoessage(char*,char上一页12345678910...下一页>>[这篇文章来自..,]*);_declspec(dllexport)voidcToJavaStr(char*);到这里为止,VC的DLL部分就编写完毕。接下来就是
此文档下载收益归作者所有