visual studio报:引发的异常:“System.DllNotFoundException”(位于 ConsoleCAN1.exe 中)

最近在重构CAN通信的代码,把论文中的java转为C#实现,由于某种原因,java不能复现,所以转为c#。

然而c#的重构过程遇到许多问题,因为两种语言的编程方式、线程等等实现上有所差异。

其中一个错误:

引发的异常:“System.DllNotFoundException”(位于 ConsoleCAN1.exe 中)

说 dll 找不到,

但是我明明把DLL文件放在项目中了,而且也在代码中引用了,就不明了,所以去问了一下

于是
在这里插入图片描述

这个异常通常表示系统找不到特定的 DLL 文件。这可能是由于以下几种原因导致的:

  1. DLL 文件缺失:确保程序依赖的 DLL 文件存在,并且位于正确的路径下。有时候需要将 DLL 文件复制到输出目录中(例如 bin 目录)。
  2. 平台不匹配:DLL 文件可能是针对特定平台编译的,例如 x86 或 x64。确保程序和 DLL 文件的平台匹配。
  3. 依赖关系问题:某些 DLL 文件可能依赖于其他 DLL 文件。确保所有依赖的 DLL 文件都可用,并且位于正确的路径下。
  4. 权限问题:确保程序有权限读取所需的 DLL 文件。在某些情况下,需要以管理员权限运行程序。

可以尝试以下方法来解决这个问题:

  1. 确保程序依赖的 DLL 文件存在,并且位于正确的路径下。
  2. 检查程序和 DLL 文件的平台是否匹配。
  3. 检查是否有其他依赖项缺失。
  4. 尝试以管理员权限运行程序。

如果仍然无法解决问题,可以提供更多关于异常的详细信息,以便更好地帮助解决问题。

看项目属性:

要查看当前 Visual Studio 中的 C# 项目是什么平台的(例如 x86、x64、AnyCPU),以及是多少位的(32 位或 64
位),可以按照以下步骤进行:

  1. 打开 Visual Studio 并加载您的 C# 项目。
  2. 在 Visual Studio 的菜单栏中,选择“项目” -> “项目属性”(或者按下 Alt + Enter 组合键)。
  3. 在弹出的窗口中,选择“生成”选项卡。
  4. 在“平台目标”下拉菜单中,您可以看到当前项目所选的平台设置。这里会显示项目是针对 x86、x64、AnyCPU 还是特定的 CPU 架构。
  5. 如果您想要查看项目是多少位的(32 位或 64 位),可以根据平台目标来确定。例如,如果选择了 x86 平台,则项目是 32 位的;如果选择了 x64 平台,则项目是 64 位的。

通过以上步骤,您可以轻松地查看当前 Visual Studio 中的 C# 项目是什么平台的,并确定项目是多少位的。

经过修改项目属性,复制过好几次dll,最终的解决是换为64位dll,目标平台改为 x64 ,相关文件复制到bin的Debug下,然后程序就能正常使用动态链接库了。

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解数据结构第一弹——二叉树(1)——堆

前言: 在前面我们已经学习了数据结构的基础操作:顺序表和链表及其相关内容,今天我们来学一点有些难度的知识——数据结构中的二叉树,今天我们先来学习二叉树中堆的知识,这部分内容还是非常有意思的,下面我们…

网络安全接入认证-802.1X接入说明

介绍 802.1X是一个网络访问控制协议,它可以通过认证和授权来控制网络访问。它的基本原理是在网络交换机和认证服务器之间建立一个安全的通道,并要求客户端提供身份验证凭据。如果客户端提供的凭据是有效的,交换机将开启端口并允许访问。否则&…

Linux(CentOS7.5) 安装部署 Python3.6(超详细!包含 Yum 源配置!)

文章目录 1.配置 Yum 源2.下载 Python3 包3. 解压4.安装依赖环境5.安装出错场景 6.创建软链接7.配置 Python3 的环境变量8.验证补充:安装 openssl-devel补充:pip3 源配置 1.配置 Yum 源 # 注意!!!请先切换到 root 账号…

Go语言爬虫实战(线程池)

Go语言爬虫实战 目标 利用go语言爬取指定网站的图片。实现爬取网站任意页面所有所需的图片。实现使用go语言线程池开启多个线程爬取图片内容。最后实现创建多个文件夹存储图片。 爬取网站图片 步骤 对指定URL发去GET请求,获取对应的响应。 resp, err : http.Get(…

小迪学习笔记(内网安全)(常见概念和信息收集)

小迪学习笔记(内网安全)(一) 内网分布图内网基本概念工作组和域环境的优缺点内网常用命令域的分类单域父域和子域域数和域森林 Linux域渗透问题内网安全流程小迪演示环境信息收集mimikatzLazagne(all)凭据信息政集操作演示探针主机…

Modbus转Profinet网关快速解决PLC插槽数量不够用的烦恼

通过Modbus转Profinet(XD-MDPN100)网关的应用,不仅可以实现Modbus设备与Profinet网络的平滑对接,还能有效解决PLC插槽限制和Modbus指令轮询等问题,Modbus转Profinet网关(XD-MDPN100)在解决PLC插…

CSS(三)---【盒子模型、边框、外边距合并】

零.前言 本篇主要介绍CSS中最重要的一种概念模型:“盒子模型”。 关于CSS的更多内容,可以查看作者之前的文章: CSS(一)---【CSS简介、导入方式、八种选择器、优先级】-CSDN博客 CSS(二)---【常见属性、复合属性使用】-CSDN博客 一.盒子模…

鸿蒙OS开发实例:【消息传递】

介绍 在HarmonyOS中,参考官方指导,其实你会发现在‘指南’和‘API参考’两个文档中,对消息传递使用的技术不是一对一的关系,那么今天这篇文章带你全面了解HarmonyOS 中的消息传递 概况 参照官方指导,我总结了两部分…

链表合集(easy难度)

合并两个有序链表 双指针法 由于list1和list2都是递增的,可以想到用双指针法。假如当前list1这个指针指向的节点被收入完成,那就list1;如果是list2被收入,那就list2。 具体是list1和节点被收入还是list2的节点被收入&#xff…

Netty核心原理剖析与RPC实践21-25

Netty核心原理剖析与RPC实践21-25 21 技巧篇:延迟任务处理神器之时间轮 HahedWheelTimer Netty 中有很多场景依赖定时任务实现,比较典型的有客户端连接的超时控制、通信双方连接的心跳检测等场景。在学习 Netty Reactor 线程模型时,我们知道…

使用filezilla连接Ubuntu22.04虚拟机

获取电脑IP和虚拟机IP ① 在windows下ctrlR再输入cmd,打开指令窗口,输入 ipconfig 虚拟机连接电脑用的是NAT模式,故看VMnet8的IP地址 ② 查看虚拟机IP地址 终端输入 ifconfig 如果没安装,按提示安装net-tools sudo apt install …

HarmonyOS 应用开发之创建PageAbility

开发者需要重写app.js/app.ets中的生命周期回调函数,开发者通过DevEco Studio开发平台创建PageAbility时,DevEco Studio会在app.js/app.ets中默认生成onCreate()和onDestroy()方法,其他方法需要开发者自行实现。接口说明参见前述章节&#xf…