上一讲我们介绍了JNI的基本概念和基本用法。现在介绍复杂一点的.docVIP

上一讲我们介绍了JNI的基本概念和基本用法。现在介绍复杂一点的.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
上一讲我们介绍了JNI的基本概念和基本用法。现在介绍复杂一点的

上一讲我们介绍了JNI的基本概念和基本用法。现在介绍复杂一点的例子,用JNI调用其他工具生成的DLL,实现某个特定的功能。在这里我们将用VC编写一个DLL,供JAVA调用。      VC编写简单DLL   这个DLL实现一个简单的字符串传递,然后弹出一个消息框,显示所传递的字符串,同时将所传递的字符串变成小写,返回给JAVA程序。即JAVA程序和VC编写的DLL实现字符串互传。   打开VC集成开发环境,选择file-new-Projects,选择MFC AppWizard(dll),然后输入工程名,在这里我们输入的是VJString。单击下一步,其余取默认选项。   在VJString.h头文件里面声明两个方法,示列代码如下:   ………..   #include resource.h // main symbols 这是VC生成的代码   //---------add by normalnotebook 8/9/2004 start----------//   void showMessage(char *text,char *caption);   void cToJavaStr(char *context);   //---------add by normalnotebook 8/9/2004 end ----------//   …………..   然后在VJString.cpp里面加入这两个方法的实现。   //---------add by normalnotebook 8/9/2004 start----------//   void showMessage(char *text,char *caption)   {    CString strText,strCaption;    strText.Format(_T(%s),text);    strCaption.Format(_T(%s),caption);    MessageBox(NULL,text,caption,MB_OK);   }      void cToJavaStr(char *context)   {    CString strContext;    strContext.Format(%s,context);    strContext.MakeLower();    strcpy(context,(LPCTSTR)strContext);   }   //---------add by normalnotebook 8/9/2004 end ----------//   到这里为止,DLL部分就基本差不多了。大家也许很奇怪,为什么不用CString 做参数,为什么要用最原始的char *。原因是这样的:在写JNI对应的C实现部分时,因为那是在C/C++的编译环境下,根本不认识CString这个MFC类。   还应该在VJString.def文件里面做导出函数的说明,示列代码如下:   EXPORTS    ; Explicit exports can go here    showMessage    cToJavaStr   现在就可以开始编译,链接它。然后它会生成一个VJString.dll这个DLL文件,同时也会生成一个VJString.lib这个文件,供调用这个DLL的程序使用(那个调用程序是静态链接这个dll)。   把dll和lib文件拷贝到一个文件夹下。我们此时还可以做一个.h文件,供调用者使用。在这里我们将导出两个方法,在这个文件夹下生成一个VJString.h的头文件。如果调用程序是动态链接,可以不要.lib和.h文件。VJString.h头文件的内容如下:   _declspec(dllexport) void showMessage(char* ,char*);   _declspec(dllexport) void cToJavaStr(char*);   到这里为止,VC的DLL部分就编写完毕。接下来就是完成JNI部分了。         JNI部分   一.JAVA部分   在这里我们将举一个包含包的情况,因为有包要比无包复杂。在实际的项目中,可能都是包含包的情况(具体有什么需要注意的地方,请参看我前一篇文章)。   我们新建一个JAVA文件,取名为VJString.java;其内容如下所示:   package com.convertString;   public class VJString   {    static    {    System.out.println(System.getProperty(java.library.path));    System.loadL

文档评论(0)

juhui05 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档