还是关于Dll文件调用的问题(我是菜鸟,希望各位不要扔砖) 你的dll文件要符合jni中的外部类文件的规定,不是随便一个类文件都可以用的! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果要仔细研究,看看jdk文档中的jni板块,里面讲的很详细! 干脆你说详细点,要我怎么做,是不是要再做一个DLL文件,调用已经有的文件,然后再做JAVA文件调用我后写的这个DLL文件??? 第一步:用最简单的例子举例:写一个类:class HelloWorld { public native void displayHelloWorld();//定义本地方法 static { System.loadLibrary("hello");//调入本地库 } public static void main(String[] args) { new HelloWorld().displayHelloWorld(); } } 这个类和普通的类文件没有什么区别,但要看到还是有些细微区别!你看出了么?然后编译javac HelloWorld.java 这时生成了HelloWorld.class文件接着javah -jni HelloWorld 生成HelloWorld.h头文件第二步:编写C文件并编译成DLL#include <jni.h> #include "HelloWorld.h" #include <stdio.h> #include <windows.h> JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj) { printf("Hello world!\n");//在这里实现java类中定义的方法 MessageBeep(0);//调用到win本地,会发一声响 return; } 文件名随便取,但要以.c为后缀!然后用c或者c++的工具编译成dll文件,用vc或者其它工具生成!(不知道你的c是不是很好?) 晕老大,我还是不太明白,那个我要调用的dll文件是别人写好的啊。 别人在dll文件中写好了方法,然后我想用JAVA调用它啊 最后运行:java HelloWorld看到了什么结果么!注意dll文件的摆放位置,你可以放入和class文件的同一个目录,或者放入c:\windows\system32目录下,或者放在系统可以搜索到的路径如classpath中! //第三方提供了一个DLL文件和一个VB/VC调用的例子,方法名都有了这个dll不能在java中直接用, 你需要写个jni的dll, 这个dll中调用第三方dll to zhutouzip: 2星,该散分了吧,呵呵 你可以把刚才那个dll文件作为中间dll文件,在这个中间dll文件中调用别人写好的dll文件!然后在java中调用这个中间dll文件啊!至于怎么在刚才那个.c文件中调用另外一个dll文件,这是c/c++中的语法规则, 有没有java 实现的base64_encode函数 请问不用多线程,在父窗口里怎么能等待子窗口输入完成 十分急!几个笔试题,帮忙看看!!!! xpdf java里不支持逗号运算符吗?好象有本书上说可以的。。。。 AXIS如何发布指定类中的若干个方法 高分求Eclipse3.2+VE 小女子又有问题想请教各位学长了? Savepiont为何报错 关于JNetPcap的问题 看看这两者有什么不同....... 一个关于java.util.Date的问题:不同的日期居然返回相同的结果?!!怪了,请高人指点
用最简单的例子举例:写一个类:
class HelloWorld {
public native void displayHelloWorld();//定义本地方法 static {
System.loadLibrary("hello");//调入本地库
}
public static void main(String[] args) {
new HelloWorld().displayHelloWorld();
}
}
这个类和普通的类文件没有什么区别,但要看到还是有些细微区别!你看出了么?
然后编译javac HelloWorld.java 这时生成了HelloWorld.class文件
接着javah -jni HelloWorld 生成HelloWorld.h头文件第二步:编写C文件并编译成DLL
#include <jni.h>
#include "HelloWorld.h"
#include <stdio.h>
#include <windows.h> JNIEXPORT void JNICALL
Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
{
printf("Hello world!\n");//在这里实现java类中定义的方法
MessageBeep(0);//调用到win本地,会发一声响
return;
}
文件名随便取,但要以.c为后缀!
然后用c或者c++的工具编译成dll文件,用vc或者其它工具生成!(不知道你的c是不是很好?)
看到了什么结果么!
注意dll文件的摆放位置,你可以放入和class文件的同一个目录,或者放入c:\windows\system32目录下,或者放在系统可以搜索到的路径如classpath中!
至于怎么在刚才那个.c文件中调用另外一个dll文件,这是c/c++中的语法规则,