当前位置: 技术问答>java相关
如何使用java,调用Visual Basic的ActiveX Dll???(100)
来源: 互联网 发布时间:2015-08-20
本文导语: 现有一个java应用,希望可以调用现有的一些VB的ActiveX Dll的方法。 调用方法的限制: i. 拒绝使用商业的控件。 ii. 只编少量的程序就可实现。 iii.有一定的及时性的限制。 | 我会: ) 给一...
现有一个java应用,希望可以调用现有的一些VB的ActiveX Dll的方法。
调用方法的限制:
i. 拒绝使用商业的控件。
ii. 只编少量的程序就可实现。
iii.有一定的及时性的限制。
调用方法的限制:
i. 拒绝使用商业的控件。
ii. 只编少量的程序就可实现。
iii.有一定的及时性的限制。
|
我会: )
给一个简单例子:
package mytest;
public class HelloNative
{ //要调用的本地方法声明为native
public native static void greeting();
static
{
System.loadLibrary("newPrintfDll");
}
}
主类如下:
package mytest;
import mytest.*;
public class HelloNativeTest
{
public static void main(String[] args)
{
HelloNative.greeting();
}
}
首先,你要编译有native方法的那个文件,生成class文件,然后,使用jdk自带的命令javah编译该类文件,生成.h文件,生成的.h文件的关键代码如下:
JNIEXPORT void JNICALL Java_mytest_HelloNative_greeting
(JNIEnv env*, jclass cl);//稍微改了改
用vc或者c++builder做一个dll文件,跟着winzard做,不难,将这段代码拷贝到cpp文件里(用vc做时),然后再在下面写出你要的代码如
JNIEXPORT void JNICALL Java_mytest_HelloNative_greeting
(JNIEnv env*, jclass cl)
{
printf("Hello NativeWorld!");
}
编译生成dll,放到c:winntsystem下就可以了.
注意:
在用vc编译dll时,要先找到jni.h和jni_md.h放到include里
在编译.h文件是注意包的路径问题(如果有的话),否则虽然可以找到dll,但还是会提示找不到方法的!
以上只是一点心得,希望对你有帮助,谢谢
给一个简单例子:
package mytest;
public class HelloNative
{ //要调用的本地方法声明为native
public native static void greeting();
static
{
System.loadLibrary("newPrintfDll");
}
}
主类如下:
package mytest;
import mytest.*;
public class HelloNativeTest
{
public static void main(String[] args)
{
HelloNative.greeting();
}
}
首先,你要编译有native方法的那个文件,生成class文件,然后,使用jdk自带的命令javah编译该类文件,生成.h文件,生成的.h文件的关键代码如下:
JNIEXPORT void JNICALL Java_mytest_HelloNative_greeting
(JNIEnv env*, jclass cl);//稍微改了改
用vc或者c++builder做一个dll文件,跟着winzard做,不难,将这段代码拷贝到cpp文件里(用vc做时),然后再在下面写出你要的代码如
JNIEXPORT void JNICALL Java_mytest_HelloNative_greeting
(JNIEnv env*, jclass cl)
{
printf("Hello NativeWorld!");
}
编译生成dll,放到c:winntsystem下就可以了.
注意:
在用vc编译dll时,要先找到jni.h和jni_md.h放到include里
在编译.h文件是注意包的路径问题(如果有的话),否则虽然可以找到dll,但还是会提示找不到方法的!
以上只是一点心得,希望对你有帮助,谢谢
|
给你两个连接去看看
http://www-900.ibm.com/developerWorks/cn/java/jnimthds/index.shtml
http://www-900.ibm.com/developerWorks/cn/java/jw-tips/tip023/index.shtml
还有
http://www-900.ibm.com/developerWorks/cn/java/javabeans-mig/index.shtml
http://www-900.ibm.com/developerWorks/cn/java/jnimthds/index.shtml
http://www-900.ibm.com/developerWorks/cn/java/jw-tips/tip023/index.shtml
还有
http://www-900.ibm.com/developerWorks/cn/java/javabeans-mig/index.shtml
|
System.loadLibrary("JRockey");
其中JRockey是指windows/system或winnt/system32下的JRockey.dll
也就是说你的dll文件应该放在windows/system或winnt/system32下!
其中JRockey是指windows/system或winnt/system32下的JRockey.dll
也就是说你的dll文件应该放在windows/system或winnt/system32下!
|
JRockey.dll里还有相应的对象呢,要调这些对象的方法才行呀,不知该怎么做呀!
关注!
关注!
|
不会吧,简直恐怖!!!!!!!!!!!!!