Windows 下 JNA 调用动态链接库 dll
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2021-03-15 生产环境 OOM 与 GC 问题的处理思路