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下,然后程序就能正常使用动态链接库了。

相关推荐
张较瘦_2 分钟前
[论文阅读] 软件工程 | 解决Java项目痛点:DepUpdater如何平衡依赖升级的“快”与“稳”
java·开发语言·论文阅读
老华带你飞4 分钟前
记录生活系统|记录美好|健康管理|基于java+Android+微信小程序的记录生活系统设计与实现(源码+数据库+文档)
android·java·数据库·vue.js·生活·毕设·记录生活系统
Seven9723 分钟前
微服务/分布式 基础面试题
java
weixin_4565881524 分钟前
JVM(java虚拟机)
java·开发语言·jvm
hygge99924 分钟前
JVM 内存结构、堆细分、对象生命周期、内存模型全解析
java·开发语言·jvm·经验分享·面试
小二·26 分钟前
Java虚拟机(JVM)面试题(51道含答案)
java·开发语言·jvm
无敌最俊朗@29 分钟前
03-事务高频面试总结
java·开发语言·jvm
hygge99936 分钟前
类加载机制、生命周期、类加载器层次、JVM的类加载方式
java·开发语言·jvm·经验分享·面试
一 乐1 小时前
海产品销售系统|海鲜商城购物|基于SprinBoot+vue的海鲜商城系统(源码+数据库+文档)
java·前端·javascript·数据库·vue.js·后端
idcardwang2 小时前
esp32-s3-supermini使用arduio IDE进行mpu6050的数据读取
ide·单片机