永发信息网

java程序能直接调用C写好的dll文件吗?

答案:2  悬赏:0  手机版
解决时间 2021-04-15 12:23
java程序能直接调用C写好的dll文件吗?
最佳答案
JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。通过调用本地的库文件的内部方法,使JAVA可以实现和本地机器的紧密联系,调用系统级的各接口方法。
简单介绍及应用如下:
一、JAVA中所需要做的工作
在JAVA程序中,首先需要在类中声明所调用的库名称,如下:
static {
System.loadLibrary(“goodluck”);
}

在这里,库的扩展名字可以不用写出来,究竟是DLL还是SO,由系统自己判断。
还需要对将要调用的方法做本地声明,关键字为native。并且只需要声明,而不需要具 体实现。如下:
public native static void set(int i);
public native static int get();
然后编译该JAVA程序文件,生成CLASS,再用JAVAH命令,JNI就会生成C/C++的头文件。
例如程序testdll.java,内容为:
public class testdll
{
static
{
System.loadLibrary("goodluck");
}
public native static int get();
public native static void set(int i);

public static void main(String[] args)
{
testdll test = new testdll();
test.set(10);
System.out.println(test.get());
}
}

用javac testdll.java编译它,会生成testdll.class。
再用javah testdll,则会在当前目录下生成testdll.h文件,这个文件需要被C/C++程序调用来生成所需的库文件。
全部回答
可以调用,别说是DLL了,就是COM都可以调用的!
class firstJNI
{
public native void displayHelloWorld();
public native void displayOther();
private native String getLine(String prompt);
static {
System.loadLibrary("firstJNI");//This is firstJNI.DLL

}
public static void main(String[] args)
{
firstJNI JN=new firstJNI();
JN.displayHelloWorld();
JN.displayOther();

String input = JN.getLine("Enter Some Thing ");
System.out.println("You Entered " + input);
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
侬本痴情的介绍
五宗罪九宗罪十宗罪十三宗罪都是什么意思 十
自考可以同时报考两个专业吗
退伍军人纠正结婚证,房产证需要什么手续,多长
有首英文歌,开头好像是gogogogogo,挺有气势
《春中田园作》王维 翻译
大豆虫就是野蚕吗?
怎么用EXCEL电子表格计算卧式油罐还有几吨油
福建人口多少?
老人结婚纪念日送什么礼物好
怎么洗针织衫
用0、3、6、9组成一个最小的两位小数是多少?
当你细心聆听细雨敲打着窗棂,仿写句子。
1998年9月24日生的,城头土命好不好
未满18周岁的孩子去哪些国家需要出生证明!!
推荐资讯
老虎娜的娜字真正写法,请知道的告诉我,谢谢
懂绘画心理学的进来帮我分析一下,谢谢,图已画
苦荞茶和什么搭配不寒
心脏病只有可能遗传吗?
穿紫色上衣配什么颜色裤子比较合理
DNF游戏里面施放方式为被动的技能是怎么使用
美的空气能热水器厦门总代理店在哪呢???
牛顿是怎样发现自由落体运动的?
有一个群群里都是美女群名叫什么好啊
王店子镇这个地址在什么地方,我要处理点事
矮子放屁下一句是什么,上联保家卫国匹夫有责
QQ三国今天推举孝廉的答案
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?