网站首页 > java教程 正文
1. 创建动态链接库项目
- 创建jnaTest项目
下一步中填写项目名称和存储的目录;然后直接创建即可
创建结果
2. 定义头文件
#pragma once
#ifndef JNA_TEST_H
#define JNA_TEST_H
#ifdef __cplusplus
extern "C"
{
#endif
__declspec(dllexport) int add(int a, int b);
__declspec(dllexport) void welcome(char* name);
#ifdef __cplusplus
}
#endif
#endif //JNA_TEST_H
备注: 一定要添加__declspec(dllexport),否则没有导出dll方法;在java调用这个方法时提示:
Exception in thread "main" java.lang.Unsatisfied
LinkError: Error looking up function
可参考文章
https://zhuanlan.zhihu.com/p/50997285
3. 添加cpp文件
#include "pch.h"
#include "JnaTest.h"
#include <string>
int add(int a, int b) {
return a + b;
}
void welcome(char* name) {
std::string temp = name;
printf_s(name);
}
4. 编写java文件
package com.jnademo;
import com.sun.jna.Library;
import com.sun.jna.Native;
public class JnaTest {
public interface CLibrary extends Library {
CLibrary INSTANCE = (CLibrary) Native.load("E:\\dllws\\jnaTest\\x64\\Debug\\jnaTest.dll",
CLibrary.class);
int add(int a, int b);
void welcome(String name);
}
public static void main(String[] args) {
int sum = CLibrary.INSTANCE.add(10, 3);
CLibrary.INSTANCE.welcome("JNA hello world");
System.out.println(sum);
}
}
运行结果
5. 如何检查缺少的dll依赖库
在进行生产部署时,有可能出现部署的服务器缺少依赖库的情况,这种情况下需要排查具体缺少哪个依赖库,再根据具体情况安装对应的运行环境。
查看dll或exe所依赖的dll,depends家喻户晓。可惜的是depends不支持win10,使用时直接停止响应。那么在win10上有没有类似工具呢?这里推荐一款开源工具Dependencies,非常的好用。 下载地址
https://github.com/lucasg/Dependencies
使用起来很简单,运行DependenciesGui.exe,然后直接将exe或dll文件拖到窗口中即可。
如果发现缺少应该的dll依赖库;根据具体情况如下地址下载对应版本的Visual C++ Redistributable,安装即可
https://www.microsoft.com/zh-cn/download/details.aspx?id=48145
比如像下图显示就是缺少了依赖库
- 上一篇: Java 应用性能瓶颈剖析与多线程优化实战
- 下一篇: 提示缺少dll文件,一键安装这个就解决
猜你喜欢
- 2024-12-13 我的世界启动器使用方法详解
- 2024-12-13 关于组件,你真的了解么?
- 2024-12-13 文件后缀,也称为文件扩展名,用于标识文件的类型
- 2024-12-13 openmeetings(开源视频会议系统)的详细安装步骤 (windows版)
- 2024-12-13 你一定要看的安装及卸载测试用例的步骤及方法总结
- 2024-12-13 JVM理解classloader加载class文件的原理和机制
- 2024-12-13 傻瓜式Windows编程
- 2024-12-13 反向 Debug 了解一下?揭秘 Java DEBUG 的基本原理
- 2024-12-13 初学Tomcat会遇到的所有问题,解决方法都在这儿了
- 2024-12-13 Unity3D手游开发实践《腾讯桌球》客户端开发经验总结
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)