Windows 下 JNA 调用动态链接库 dll

简介: 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

比如像下图显示就是缺少了依赖库

相关文章
|
2月前
|
XML C# 数据格式
掌握了在Windows平台上查看DLL依赖的方法
掌握了在Windows平台上查看DLL依赖的方法
215 4
|
7月前
|
关系型数据库 MySQL 开发工具
windows编译poco c++库
windows编译poco c++库
|
7月前
|
存储 Java C语言
Windows 下 JNI 调用动态链接库 dll
Windows 下 JNI 调用动态链接库 dll
171 0
|
7月前
|
安全 Linux 网络安全
【Windows】搭建Emby媒体库服务器,实现无公网IP远程访问
【Windows】搭建Emby媒体库服务器,实现无公网IP远程访问
548 0
|
7月前
|
编译器 C语言 C++
|
4月前
|
XML C# 数据格式
绝密档案曝光!Windows平台如何深挖一个dll背后的神秘依赖,揭露隐藏的秘密!
【8月更文挑战第14天】在Windows系统中,动态链接库(DLL)对程序运行至关重要。了解DLL的依赖关系有助于软件的调试与优化。本文以具体案例演示如何查看DLL依赖。首先确保环境已安装Windows及具备基本开发知识。
77 0
|
7月前
|
算法 Linux Windows
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
在Windows环境下为FFmpeg集成字幕渲染库libass涉及多个步骤,包括安装freetype、libxml2、gperf、fontconfig、fribidi、harfbuzz和libass。每个库的安装都需要下载源码、配置、编译和安装,并更新PKG_CONFIG_PATH环境变量。最后,重新配置并编译FFmpeg以启用libass及相关依赖。完成上述步骤后,通过`ffmpeg -version`确认libass已成功集成。
158 1
FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
|
6月前
|
Windows 计算机视觉 Linux
QtCreator 跨平台开发添加动态库教程(以OpenCV库举例)- Windows篇
该文档介绍了Qt的跨平台特性,并推荐在Windows和Linux开发中使用QtCreator。在Windows下添加动态库,可以通过Visual Studio配置.lib文件和.dll文件,或在QtCreator中使用&quot;添加库&quot;功能。在QtCreator中,选择库文件、包含路径,并配置Details,然后更新.pro文件,清除、qmake及构建项目。运行时确保.dll与.exe在同一目录下。
196 0
QtCreator 跨平台开发添加动态库教程(以OpenCV库举例)- Windows篇
|
7月前
|
Linux 开发工具 计算机视觉
QtCreator 跨平台开发添加动态库教程(以OpenCV库举例)- Windows篇
Qt是跨平台的开发工具,推荐使用QtCreator进行Windows和Linux开发。在Windows下,使用Visual Studio创建动态库时,需要配置.lib文件并确保运行时.dll与.exe在同一目录。在QtCreator中添加DLL动态库,可以通过右键项目,选择添加库,然后在Details界面配置库文件、包含路径和平台,最后更新PRO文件并进行清除、qmake和构建步骤。运行时同样需确保.dll文件与可执行文件在同一目录。
192 5
|
6月前
|
Windows