Java下(Eclipse中)调用DLL动态链接库的方法

时间:2024.4.27

Java下(Eclipse中)调用DLL动态链接库的方法

使用到的工具包括:Eclipse、VC6.0、cmd、notepad

Java使用JNI调用C/C++的DLL动态链接库,例如,我们有Animal类

********************************************************

package com;

public class Animal

{

public native int getAge();

public native void setAge(int age);

public native void say();

public native void run();

}

********************************************************

Animal.java文件位于F:\JWorkspace\Test

1、用javah命令生成.h文件

a、使用javac命令把Animal.java编译生成Animal.class文件

b、cmd进入到F:\JWorkspace\Test

c、在当前目录下手动建立文件夹com,并将Animal.class文件移动到com目录下

d、命令:javah -classpath "F:\JWorkspace\Test" com.Animal 成功则生成com_Animal.h文件

注意命令中的com.Animal的写法,带上包名com,.后面跟类名即可

2、生成dll文件,采用VC6.0

a、使用VC新建一个DLL工程,命名TestDLL

b、将jni.h和jni_md.h文件复制到VC安装目录的include文件下,方便以后的JNI使用。这里的jni.h文件位于Java安装目录下的Java\jdk1.5.0_10\include,jni_md.h文件位于Java\jdk1.5.0_10\include\win32下,因为jni.h文件引用了jni_md.h文件,所以

必须将这两个文件置于你的VC工程下;或者直接放到VC安装目录的include目录下,方便以后使用。

c、新建一个CPP文件,将第一步生成的头文件com_Animal.h包含进来,接下来编写如下代码:

********************************************************

#include <stdio.h>

#include "com_Animal.h"

int age = 0;

JNIEXPORT jint JNICALL Java_com_Animal_getAge

(JNIEnv *, jobject)

{

return age;

}

JNIEXPORT void JNICALL Java_com_Animal_setAge

(JNIEnv *, jobject, jint _age)

{

age = _age;

}

JNIEXPORT void JNICALL Java_com_Animal_say

(JNIEnv *, jobject)

{

printf("Hello World!\n");

}

JNIEXPORT void JNICALL Java_com_Animal_run

(JNIEnv *, jobject)

{

printf("Running!\n");

}

********************************************************

d、编译并生成dll:TestDLL

3、使用Eclipse调用生成的DLL库文件

a、使用Eclipse建立Java Application工程,创建package,将之前的Animal类放到工程源文件的com目录下

b、创建一个新的java class文件,命名test.java,代码如下:

********************************************************

package com;

import com.Animal;

public class test

{

static

{

System.loadLibrary("TestDLL");

}

public static void main(String[] args)

{

Animal persion = new Animal();

persion.setAge(23);

System.out.println("Age: " + persion.getAge());

persion.say();

persion.run();

}

}

********************************************************

c、将之前编译好的dll放置到工程的根目录下,若不行可放置到java安装路径下如:\Java\jdk1.5.0_10\bin 或者\Java\jre1.5.0_10\bin

若还是不行,则将该dll直接放置到windows系统的system32目录下(注意,一定要保证dll与Animal的一致性)

NOTE:

1:java中的dll分为两类,一类是java直接使用;一类是dll本身还要依赖别的dll

2:使用LoadLibrary()方式加载dll,需给出绝对路径名,使用Load方式加载dll,只需要给出dll的名字既可,不带.dll


第二篇:Java Eclipse使用方法


◎选择菜单“文件/新建/项目”,选择“Java项目”,弹出“创建Java项目”对话框。 ◎在“创建Java项目”中输入“项目名”,项目名可以为任意名字,不必和main类的名字一样。这里假设为“Notepad”。 在“内容”中有两个单选按钮,视你的需要来使用。其中“在工作空间中创建新项目”会在你的工作空间中创建一个新目录,目录名与项目名一致;“从现有资源创建项目”可以在源码所在目录中直接编译运行,生成的class文件也会存放在源码目录中。 下面先讲“在工作空间中创建新项目”的方法。 ◎在“内容”中单选“在工作空间中创建新项目”,点击“完成”按钮。此时在e:\workspace下生成Notepad目录。 ◎下面需要导入源码到工作空间去。选择菜单“文件/导入”,选择“文件系统”。弹出“文件系统”对话框。 ◎在“从目录”中选择源码存放目录“我的文档\cai\Java\一个仿windows的记事本”,勾选上所有的.java源码,其他的垃圾不要选上。下面又有两个选择:对话框下方有两个选项,若选择“创建完整的文件夹结构”,就会按源码所存放的路径完整地在工作空间中创建目录,创建完毕会由于main方法类的路径不对而在包资源管理器内的图标上显示叉叉,无法编译成功;若选择“只创建选择的文件夹”,则会在工作空间创建的目录下导入所有的文件而不会保留原目录,此时可以编译成功。 ◎若选择“创建完整的文件夹结构”,导入完成后,选择菜单“项目/属性/Java构建路径/源代码”,点击“添加文件夹”,把子目录逐级点开,直到源代码所在这级目录为止,勾选上该目录。弹出的提示对话框点击确定即可。注意上级目录不要勾选,否则会报错。这样这种方法导入的源码也可以编译运行了。 ◎注意若源代码中含有子目录,在main程序中会有import ...的语句,此时要注意import后面的目录级别,在选择Java构建路径时要勾选上import指明的上级目录名。例如,连连看代码中有子目录topbar,在main程序中有import kyodai.topbar语句,那么就要勾选到“我的文档\cai\Java\连连看\”这级目录,而非源码所在的“我的文档\cai\Java\连连看\kyodai”目录。 ◎在连连看源码中,作者已经把所有源码都打包成了一个Jar,此时只需要添加该Jar包而不需要导入其他源码就可以运行了(但不能调试,因为Jar包中不含源码)。方法是创建完新项目后,选择菜单“项目/属性/Java构建路径”,点击“库”页,点击“添加外部JAR”按钮,选择源码自带的Jar包即可运行。 下面介绍“从现有资源创

建项目”的方法。 ◎在“创建Java项目”对话框中,点击“下一步”按钮,弹出“Java设置”对话框。 ◎在“Java设置”对话框中选择“库”页,选择“添加JAR”,若找不到随源码提供的Jar包,就选择“添加外部JAR”。一般如果Jar存放的目录正确,在“添加JAR”中是可以找到该条目的。双击出现的Jar包即可添加进去。若不需要额外的库支持,则点击“完成”。 这样,用上面两种方法创建的项目就可以编译运行了。下面就介绍运行的方法。 ◎选择菜单“Run/运行”,弹出“创建、管理和运行配置”对话框。 ◎根据源码的种类在左边的列表中进行选择。我们用的两个例子都是Java应用程序,所以双击“Java应用程序”,在对话框右边可以输入运行的配置。 ◎如果新建了项目还没有运行过,那么右边的“项目”栏缺省值即为刚创建的项目。在“名称”栏中输入运行配置的名称,建议与项目名称一致(也可以不一致),不能与其他的运行配置重名。 ◎点击“Main类”栏右方的“搜索”按钮,一般只有一个main类,在弹出的对话框中双击下面那个栏目的main类即可。如果需要以其他的main方法做为程序入口,可以勾选上“Main类”栏下方的两个复选框,选择其他的入口。 ◎如果需要增加特殊的环境变量,例如有的源码可能需要添加classpath环境变量,则可以在“环境”页中添加。 ◎运行配置中的内容也会同样反映在调试配置中,运行和调试使用相同的配置。 创建了一堆新项目后,包资源管理器中会有一堆乱七八糟项目,有些是你需要的,有些是早已废弃不用的,你可以删除那些不用的项目,方法是右键点击该项目,选择“删除”。这里要提醒读者一下的是,删除对话框有两个选项,问你是否删除该项目目录下的内容,缺省是“不删除内容”,如果选择删除,那么那个目录就整个被删除掉了,如果你这个目录下的东西还有用,那你只好哭了。 删除掉没用的项目后,运行/调试对话框中多余的配置也可以删除,方法是右键点击不用的配置名,选择删除。

更多相关推荐:
英文读写literature review范文

TheinfluenceofminingexploitationonenvironmentandthesolutionofthedisposalofsolidwasteresidueBytheyearof20xxChinahas8...

contract review handbook

CROHandbookRevision20xx0427552RevolvingcreditChecktheFinancedatabaseforthepaymentpatternandhistoryIndivid...

Sample of a Literature Review(许)

LANGUAGEANDGENDERAbriefLiteratureReviewWiththegeneralgrowthoffeministworkinmanyacademicfieldsitishardlysurprisingth...

literature review

姓名尚青青56035120xx班级食品质量与安全121班GlobalWarmingAbstractGlobalwarmingasthecoreofClimatechangeisoneofthemostserio...

What is a Literature Review paper

WhatisaLiteratureReviewpaperItsynthesizesthekeytheoriesandresultsofafieldofstudyItdescribesevaluatesandcritiquesala...

The literature review

TheliteraturereviewofRobinsonCrusoe1IntroductionThisnovelisinspiredbyDefoewasatruestoryofthecreationofnew...

sample-literature review.pdf

SampleLiteratureReviewofStudyonChaucerandHisWorksinChinaAsthefatherofEnglishliteratureGeoffreyChaucerisno...

道林格雷的画像论文Literature Review 2

涉外船舶与海洋工程英语张丹10070312LiteratureReviewOftheValueofArtandMoralityinThePictureofDorianGrayThepaperwillsummar...

the literature review of Jane Eyre

TheLiteratureReviewofJaneEyre数学科学学院岑蔡思20xx220xx02JaneEyrewhichisaclassicnovelinVictorianageinBritainhasno...

How to write a literature review

Howtowritealiteraturereview文献综述四步走Step1Readalot第一步大量的读Soundssimplisticbutthefactisthatyoudohavetoreadalot...

我的世界Minecraft教你如何用nat123和Teamviewer联机

想必Minecraft联机一直困扰着你Hamachi要翻墙注册水桶服操作麻烦花生壳不会用网上教程看不懂怎么办呢今天交给大家一个简单的联机技巧用Teamviewer和nat123联机Nat123是一个端口映射软件...

远程操作软件Teamviewer的使用方法

远程操作软件Teamviewer的使用方法Teamviewer使用方法最近由于朋友的电脑有些问题要远程协助他解决点问题使用了几款远程连接的软件如QQ远程协助Windows自带的远程桌面连接VNC等软件因为我们都...

critical review(2篇)