jni动态库“%1 不是有效的win32应用程序”问题的解决以及一些windows下dll有关命令的记录

news2024/11/24 13:25:07

一、前因

在windows下用cmake+VS编译了一个jni动态库,再使用java测试程序调用这个动态库的时候报错:“%1 不是有效的win32应用程序”

这里是引用

对于这类问题,一般从以下几个方面考虑:

  1. 动态库文件损坏
  2. 动态库或者其依赖库文件路径错误导致找不到。(不过这种动态库本身路径错误一般会报“找不到”)
  3. 动态库架构与系统架构或者JDK架构不一致
  4. 动态库的依赖库架构不匹配

那么从这几方面考虑,一一进行排查就涉及到了一些相关的命令。

一、设置临时环境变量

命令行中使用java命令来运行测试程序加载jni动态库时,为了确保能够找到动态库,可以将动态库以及其依赖库所在的目录添加到临时环境变量Path,命令: set PATH=%PATH%;C:\Directory1\;C:\Directory2\;C:\Directory3\

二、查看JDK架构

命令1. java -version ,如下图,可以看出jdk版本是17.0.10, 架构是64位

这里是引用

命令2. java -d32 -version 或者java -d64 -version 哪个运行成功就是哪个j架构。(但是我这两个命令都出现了error,不知道为啥)

那么目前可知JDK和系统架构都是64位的,动态库也是编译的64位,但是保险起见,还是要通过命令实际看一下动态库的位数。

三、查看动态库的架构

如图,打开VS的命令行工具, 也可以直接去dumpbin.exe所在的目录下面打开cmd, dumpbin 通常位于 Visual Studio 的安装目录下的 VC\Tools\MSVC\<版本号>\bin\Hostx64\x64 或 Hostx64\x86 文件夹中

这里是引用

然后,输入命令 dumpbin /hearders a.dll ,然后看下面输出内容中“machine”的部分,后面括号中"x64"表示是64位,"x86"表示32位

这里是引用

那么到这里可以确定我的动态库本身是没有问题的,那么问题可能就出在依赖库上。

四、查看动态库的依赖项

同样打开VS的命令行工具,使用命令:dumpbin /dependents +dll/exe文件路径
如图,可以看到这些依赖库中只有第一个是一个第三方依赖库,其余几个都是windows底层库,那么需要重点关注的就是第一个依赖库。

这里是引用

首先确保这个依赖库跟报错的动态库一起都加入了环境变量中能被Java找到(第一步),然后同样检查一下这个依赖库的依赖库,发现它只依赖了一些windows底层库,没什么问题,再检查一下它的架构(第三步命令),发现它竟然是32位的!!!
好好好,问题找到了,主动态库和jdk都是64位的,偏偏这个第三方依赖库是一个32位。那么现在只需要将它替换成64位的版本,问题就解决了。(鼓掌)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2164271.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高效职场助手

在现代职场中&#xff0c;高效的工作软件是提升生产力的关键。以下是我为您精选的五款高效工作软件&#xff0c;它们各具特色&#xff0c;能够满足不同工作场景的需求&#xff1a; 1 亿可达 亿可达作为一款自动化工具&#xff0c;亿可达被誉为国内版的免费Zaiper。它允许用…

一个Windows管道的简单示例

今天为大家带来一个Windows管道通信的演示实例,服务端以单线程、同步方式与客户端通信,在某一时刻只能服务于一个客户端,可用于简单的进程间通信的场景。 服务端(SingleInstancePipeSvr)和客户端(NamedPipeClient)都是用Visual Studio 2022 Community创建,分别…

抖音上下边框中间视频效果怎么做

在抖音这个以短视频为主要内容的平台上&#xff0c;创作出既美观又富有信息量的视频至关重要。尤其是当我们手中的素材多为横屏拍摄&#xff0c;而抖音则以竖屏展示为主时&#xff0c;如何巧妙地处理这些素材&#xff0c;使它们更好地适应平台需求&#xff0c;成为了许多创作者…

Django之Haystack对接搜索引擎框架Elasticsearch

Django之Haystack对接Elasticsearch Haystack概述安装依赖环境准备Haystack配置 Haystack建立数据索引创建模型对象创建搜索索引类创建模板文件执行数据库迁移生成索引渲染模板执行测试 搜索请求和结果渲染的自定义处理概述创建搜索视图配置URL创建搜索模板自定义结果渲染执行测…

电脑数据怎么恢复?这10种数据恢复方法你一定要知道!

在如今这个数字化时代&#xff0c;电脑已经成为我们生活和工作中不可或缺的一部分。我们在电脑中存储着大量重要的数据&#xff0c;如照片、文档、视频、音乐等。然而&#xff0c;有时候意外总是不可避免&#xff0c;电脑数据可能会因为各种原因丢失&#xff0c;比如误删除、格…

父母血型与子女血型对照表

人类的血型是有遗传性的&#xff0c;父母的血型直接影响孩子的血型&#xff0c;我们可以根据父母血型推测孩子血型&#xff0c;排除不可能血型&#xff0c;那么下面就由血型分析为大家揭晓下父母血型与孩子血型对照表&#xff08;排除基因突变&#xff09; 血型遗传规律表又称血…

IMS注册流程中的基本路由寻址过程

目录 1. SIP 协议栈在 TCP/IP 中的位置 2. 看看 SIP 协议栈各层的寻址功能 本课程,以 IMS 注册流程为例,讲解 IP 网络网元是如何完成 IP 层寻址的 第一跳:UE->P-CSCF 第二跳:P-CSCF->DNS 第三跳:P-CSCF->I-CSCF 第四跳:I-CSCF->HSS 第五跳:I-CSCF-&…

深入解析Debian与Ubuntu:技术特点与用户使用指南

深入解析Debian与Ubuntu&#xff1a;技术特点与用户使用指南 引言 Debian和Ubuntu作为两大知名的Linux发行版&#xff0c;不仅在历史和理念上有所不同&#xff0c;在技术特点和用户使用方法上也各具特色。本文将深入解析它们的技术特点&#xff0c;并提供用户使用指南&#x…

SSM+Vue大学生社团管理系统

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 spring-mybatis.xml3.5 spring-mvc.xml3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质创作…

东华大学《2020年+2022年824自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;《25届东华大学824自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2020年真题 2022年真题 Part1&#xff1a;2020年2022年完整版真题 2020年真题 2022年…

惊艳桌面时钟软件 为你的桌面打造专属时间管理!

在快节奏的现代生活中&#xff0c;时间是最宝贵的资源之一。无论是在工作还是生活中&#xff0c;我们都需要时刻关注时间&#xff0c;在桌面显示一个时钟&#xff0c;可以让你更方便的掌握时间。芝麻时钟 &#xff08;下载地址&#xff1a;https://clock.zhimasoft.cn/?bili&a…

Jmeter——参数化的9种方法

jmeter工具无论做接口测试还是性能测试&#xff0c;参数化都是一个必须掌握且非常有用的知识点。参数化的使用场景: 1&#xff09;多个请求都是同一个ip地址&#xff0c;若服务器地址更换了&#xff0c;则脚本需要更改每个请求的ip 2&#xff09;注册账号&#xff0c;不允许账…

【图形学】数学基础

行矩阵和列矩阵 在图形处理中&#xff0c;矩阵操作时最基本的操作&#xff0c;但是不同的系统中对矩阵的存储是不同&#xff0c;比如OpenGL和Cg中就是不一样的&#xff1a; 比如一个4x4矩阵 [m11,m12,m13,m14m21,m22,m23,m24m31,m32,m33,m34m41,m42,m43,m44]在实现中通常将其…

海康威视网络摄像头校时、修改分辨率等操作汇总!

目录 操作环境&#xff1a; 操作原因&#xff1a; 解决办法&#xff1a; 手动校准时间&#xff0c;随着时间推移&#xff0c;可能再次出现偏差&#xff0c;操作简单&#xff1a; 【IVMS-4200】对设备批量校时操作指导&#xff1a;操作之前先把本地服务器的时间改对&#x…

【学习笔记】Kylin-Desktop-V10-SP1 麒麟系统知识2——账户设置

提示&#xff1a;学习麒麟Kylin-Desktop-V10-SP1系统账户设置相关知识&#xff0c;包含用户名修改、用户密码修改、账户类型修改、开机自动登录、免密登录、添加用户、删除用户&#xff0c;以及修改登录选项相关知识 一、前期准备 成功安装麒麟系统&#xff08;本次实验的安装…

视频压缩成文件怎么弄?4招教会你

视频文件过大&#xff0c;不仅占用存储空间&#xff0c;还影响传输效率。但是&#xff0c;压缩视频时又担心会损失画质。有没有一种方法&#xff0c;能在不牺牲画质的前提下&#xff0c;实现视频文件的压缩呢&#xff1f;答案是肯定的。 想快速学会怎么视频压缩不改变清晰度&a…

手机二要素接口如何用C#实现调用

一、什么是手机二要素&#xff1f; 手机二要素又称运营商二要素&#xff0c;运营商二要素核验&#xff0c;实名核验&#xff0c;手机号核验&#xff0c;手机二要素核验&#xff0c;即传入姓名、手机号码&#xff0c;校验此两项是否一致。实时核验&#xff0c;返回校验结果&…

不在同一局域网怎么远程桌面?非局域网环境下,实现远程桌面访问的5个方法分享!

非局域网环境下&#xff0c;怎么远程桌面&#xff1f;还能做到吗&#xff1f; 在企业管理中&#xff0c;远程桌面访问已成为提高工作效率、实现跨地域协同工作的关键工具。 然而&#xff0c;当被控端与控制端不在同一局域网时&#xff0c;如何实现远程桌面连接成为了许多企业…

ROS学习笔记(二):鱼香ROS — 超便捷的一键安装/配置/换源指令(Ubuntu/ROS/ROS2/IDE等)

文章目录 前言鱼香ROS1 一键安装&#xff1a;快速搭建开发环境2 具体使用2.1 如何开始&#xff1f;2.2 我的常用配置方案2.3 安装示例 3 总结相关链接 前言 关于Ubuntu与ROS的常规安装&#xff0c;可以看这几篇。 SLAM实操入门&#xff08;一&#xff09;&#xff1a;在已有…

特种作业管理系统 —— 企业安全与效率的卓越保障

在当今复杂多变的工业生产和作业环境中&#xff0c;安全与效率是企业发展的两大核心关键。我们深知您在特种作业管理方面面临着诸多挑战&#xff0c;如作业流程的规范性、证件的有效管理以及设备的安全运行等。今天&#xff0c;我们为您带来一款专门解决这些问题的创新产品——…