DLL引用报错没有找到(dllnotfound)或加载不正确格式(badimageformat),以及多项目情况下引用问题。

本文介绍了在C# Winform项目中遇到DLL引用错误的解决办法,包括添加引用、DllImport导入、处理DLL位数不匹配问题以及在多项目环境中解决处理器兼容性问题。详细步骤和检查方法帮助开发者定位并修复问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.搭建了一个winform项目,需引用SDK文件引用
2.项目调试时后报错无法找到DLL模块。
在这里插入图片描述
图中c:\termb.dll是为了显示报错信息故意加的错误路径。实际报错时如果你引用了路径那么会显示路径信息,反之显示的是DLL名称。

3 .DLL引用可以选择项目—添加引用
在这里插入图片描述
或者通过图1的 [ DllImport()]方式导入。区别在于该DLL文件是否是由.NET平台编译的。如果是则可以用直接添加引用的方式添加。不是则手动导入。

手动导入:1.除了在代码中声明外,还需要将DLL文件放入应用程序目录,这里我放入的是DEBUG文件下。网上也有说放入BIN目录下

2.放入system32目录下

3.在[ DllImport()]中 使用绝对路径或相对路径指向DLL文件:

 [DllImport(@"c:\Termb.dll", EntryPoint = "CVR_InitComm", CharSet = CharSet.Ansi, SetLastError = false)]
        public static extern int CVR_InitComm(int Port);`

4 .如果报错信息为 :system.badimageformat
在这里插入图片描述
这是由于发布平台和DLL的位数不同所造成的。DLL的位数可以通过notepad或VS命令符进行查看。

notepad:打开DLL文件,设置为utf-8编码。查找PE 字符。PExxxxxxD为64位,PExxxxxL为32位
VS命令:输入corflags +DLL或dumpbin /headers XXX.dll

然后将项目的发布平台设置为对应的位数。
在这里插入图片描述
网上其他的解决方案说的是设置目标平台,但我测试后没有用。便在这里将两个平台都设置了,之后通过了。(= -= 所以anycpu的意义呢)

6.另一个项目引用了该项目。报错“引用程序集面向是另一个处理器”
在这里插入图片描述
因为该解决方案的其他项目与这个项目的平台不同,将之设置为同一平台就可以解决了。
在这里插入图片描述

其实关于DLL引用和发布平台的各种适应情况还有很多不甚了解。大家可以补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值