用JNA实现JAVA调用C语言中遇到的问题

简介: 因为计网大作业要求写一个网络流量监控系统,然后查阅资料后发现,计算机网络领域其实规定了了一组API接口规范供操作系统实现,这组API接口规范叫做PCAP(Packet Capture),Windows用winpcap(查阅后其实已经废弃了,现在用的是npcap)实现了该接口,linux用libpcap实现了该接口,由于个人比较喜欢用Java,所以必不可少的就是要养Java调用C了,这次调用C遇到了不少问题,这里说一下。

事情起由

因为计网大作业要求写一个网络流量监控系统,然后查阅资料后发现,计算机网络领域其实规定了了一组API接口规范供操作系统实现,这组API接口规范叫做PCAP(Packet Capture),Windows用winpcap(查阅后其实已经废弃了,现在用的是npcap)实现了该接口,linux用libpcap实现了该接口,由于个人比较喜欢用Java,所以必不可少的就是要养Java调用C了,这次调用C遇到了不少问题,这里说一下。


问题

32位的dll不能用64位的JRE调用

由于提供的dll文件都是32位,没办法用64为的JRE调用,所以这里必须换成32位JRE。

找不到dll文件的路径

由于直接用Native.load("jnetpcap",Pcap.class),这里我不知道它是到哪里去找这个jnetpcap.dll的,然后我去官网查了一下,解决办法就是先System.setProperty("jna.debug_load","true"),然后就可以发现他查找dll文件的路径了

最后我这边是放到项目文件夹下的lib文件夹中得以解决。

关于C的类型与Java类型转换问题

这个在这https://github.com/java-native-access/jna/blob/master/www/Mappings.md里都有


目录
相关文章
|
8月前
|
Java C语言
C语言实验——输出字符串-java
C语言实验——输出字符串-java
|
8月前
|
Java C语言
用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组
用Java(C语言也可以看)实现冒泡排序和折半查找(详细过程图)+逆序数组
78 0
|
3月前
|
Java 编译器 C语言
【一步一步了解Java系列】:Java中的方法对标C语言中的函数
【一步一步了解Java系列】:Java中的方法对标C语言中的函数
33 3
|
3月前
|
存储 Java C语言
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
【一步一步了解Java系列】:了解Java与C语言的运算符的“大同小异”
49 3
|
3月前
|
Java 编译器 C语言
【一步一步了解Java系列】:探索Java基本类型与C语言的区别
【一步一步了解Java系列】:探索Java基本类型与C语言的区别
67 2
|
7月前
|
算法 Java C语言
Java中的算法与C语言中的函数
Java中的算法与C语言中的函数
47 2
|
机器学习/深度学习 Java 数据安全/隐私保护
密码检查-C语言/Java
密码检查-C语言/Java
103 0
|
8月前
|
存储 Java PHP
Java、PHP、C语言经典项目源码合集推荐(一)
Java、PHP、C语言经典项目源码合集推荐(一)
129 0
|
Java C语言
对字符串中所有单词进行倒排-C语言/Java
对字符串中所有单词进行倒排-C语言/Java
118 0
|
Java C语言
两个数组的交集-C语言/Java
两个数组的交集-C语言/Java
81 0