问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JAVA 调用OCX的问题在线等,急~先给100分不够的可以加

发布网友 发布时间:2022-05-05 09:43

我来回答

2个回答

热心网友 时间:2022-06-27 07:19

我之前用过jni和jna框架,这里有段我写的jni例子,你参考下:
------------------------------------------------------------------------
1.java文件:HelloWorld.java
public native void sayHello();
public static void main(String[] args){
System.loadLibrary("HelloWorld");
new HelloWorld().sayHello();
}
}
2.编译:javac HelloWorld.java
3.生成头文件:javah HelloWorld,注意应从java_home中拷贝jni.h和jni_md.h到当前目录中

/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
/* Header for class HelloWorld */

#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: sayHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_sayHello
(JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

4.编写C代码:HelloWorld.c
#include "HelloWorld.h"
#include <stdio.h>
JNIEXPORT void JNICALL Java_HelloWorld_sayHello(JNIEnv * j, jobject jo)
{
printf("HelloWorld!");
}
5.编译
gcc -shared -o libHelloWorld.so HelloWorld.c
6.运行
java HelloWorld
注意,要将libHelloWorld.so放在LD_LIBRARY_PATH中。

public class UnsatisfiedLinkErrorextends LinkageError当 Java 虚拟机无法找到声明为 native 的方法的适当本地语言定义时,抛出该错误。
nm libHelloWorld.so | grep Java查看so中的相关函数。

--------------------------------------------------------------
我之前公司的有些情况是这样:
1、页面上调用控件向COM串口发送数据,这个是js实现的,在html的body中有个object的属性可以指定所用的控件,然后js直接方法名调用就可以。
2、在服务器端,使用的是jna调用本地的so库文件,在windows下就是dll文件。如上面的小例子,如果用jni需要额外引入个jna.jar包
3.以下是一个jna的小例子
import com.sun.jna.Library;import com.sun.jna.Native;
public class XXXJNA {
public interface XXXLib extends Library{
//调用linux下面的so文件
XXXLib INSTANCE = (XXXLib) Native.loadLibrary("example",XXXLib.class);

int Open(int number);
}
public int Open(int number){
return XXXLib.INSTANCE.Open(number);
}
public static void main(String[] args) {
try{
XXXJNA xJNA = new XXXJNA();
xJNA.Open(0);
}catch(Exception e){
e.printStackTrace();
}
}
}

jna调用方便,只要把相应的库文件放到指定目录即可(win中放在path下面,linux下放在
LD_LIBRARY_PATH下面),然后用上面的模板模仿即可。追问请问可以加你QQ聊吗?我有个地方不是很懂...我搭建起来了可是报了一个错:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking up function 'CreateFPCacheDB': 找不到指定的程序。

请问该如何解决啊??CreateFPCacheDB是OCX里面的方法,JNA是3.5.1的版本

热心网友 时间:2022-06-27 07:19

研究一下这个问题。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我小弟要当兵,这几天在等家访,我想问一下需要拿钱之类的吗?_百度知 ... 怎样治好气管炎 怎么治好气管炎 气管炎能彻底治好吗 分手后再遇见前男友是什么感受? 分手后与前任再相遇 指弹怎么练 用吉他练指弹有什么快速入门的办法 皖西学院新生住哪里 皖西学院的宿舍条件好吗? 我电脑上的奇虎360启动不了,一启动显示上次退出为非正常推出。C:&#92;WINDOWS&#92;system32&#92;vvebc1nt.ocx win7 不能注册 DLL/OCX:RegSvr32失败!退出代码0x5 微信通话656分钟是多长时间? 微信ios56区,翅膀怎么卖 微信零钱显示300元,点开零钱后显示56元是怎么回事? 一个60岁的男人跟一个56岁的女人微信微信会产生感情吗? 请问使用过56年的微信,因为一些原因要十年登录不了微信,那微信会被注销掉吗?里面有钱的 微信钱包里有56元钱,不能支出怎么办? - 信息提示 1990年农历3.19是什么星座 农历生日3.19阳历4.6我应该是什么座 1995年农历3.19是什么星座 1984年农历3.19日是什么星座 3.19什么星座 农历1996年3.19是什么星座 QQ加好友再拉黑有提示吗 2004 3.19农历是什么星座 微信加了一个人添加好友申请没有同意我又把他拉黑了那他还能盗我的用我? 农历3.19新历5.6的星座是什么 别人加我好友后又拉黑了,我还能加回来吗? thinkphp3.2.2 用pdo连接数据库 php 5.4以上版本 提示 could not find driver WORD 里面 的拼音指南功能里面用什么字体可以显示出 小学拼音正常的a和g 钉钉里的云课堂考试会计算时间吗? 钉钉云课堂限定时间到了会强制性交卷嘛? 在线考试没点提交时间到了会自动提交吗? 抹的组词 抹怎么组词 钉钉考试的开放时间是什么意思? 钉钉 考试的开放时间是什么意思? 我是女生,姓孟,想改两个字的名字 姓孟 女孩 叫什么名字 好听 天普太阳能漏水 天普太阳能漏水怎么办 急用 谢谢 建设银行的尤文图斯足球卡是怎么回事? 想办张建行的球队俱乐部 信用卡 问一下 abaqus怎么用fortran怎么编写子程序? ABAQUS中子程序用什么软件编写,非常谢谢 怎样在abaqus中输入子程序啊?需要安装码 使用信用卡好吗》? 柯尼卡美能达 bizhub 501 能接收到电脑传送的任务,却只显示等待打印,不能进行打印或复印是为什么?