(记录)win 7系统运行C# exe报错:试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)解决方法,exe程序用到System.Data.SQLite.dll数据库

文章讲述了作者在Windows1064位系统中使用C#Winform编写的程序,涉及不带bundle的SQLite数据库。在部署到Windows764位系统时遇到BadImageFormatException,通过调整目标平台、添加特定DLL引用以及安装VisualC++Redistributable解决兼容性问题。
摘要由CSDN通过智能技术生成

在Windows 10 64位系统编写C# winform源码生成exe,使用到不带bundle的SQLite数据库,源码只引用了System.Data.SQLite.dll与在同目录分别添加了含有SQLite.Interop.dll的X86位或X64位两个文件夹与dll,如图

接着,在Windows 10 64位系统编写C# winform编写代码并运行,并没有报错。

但是把生成的exe与上面图片的文件夹连个不同位数的SQLite.Interop.dll与System.Data.SQLite.dll在windows 7  64位系统运行,出现如下图的报错:

把32位SQLite.Interop.dll放在exe同文件夹内,接着报错如下图:

详细信息,如下:

有关调用实时(JIT)调试而不是此对话框的详细信息,

请参见此消息的结尾。

************** 异常文本 **************

System.BadImageFormatException: 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)

   在 System.Data.SQLite.UnsafeNativeMethods.sqlite3_config_none(SQLiteConfigOpsEnum op)

   在 System.Data.SQLite.SQLite3.StaticIsInitialized()

   在 System.Data.SQLite.SQLiteLog.Initialize(String className)

   在 System.Data.SQLite.SQLiteConnection..ctor(String connectionString, Boolean parseViaFramework)

   在 System.Data.SQLite.SQLiteConnection..ctor(String connectionString)

.......................

.......................

按照网上教程,在项目右键属性->项目设计器->生成->目标平台->把'默认设置(Any CPU)'改为x86或X64使用这3中方法还是无法解决,还是出现上图的报错。

打开在电脑在下载不带bundle的32位于64位两个System.Data.SQLite压缩包,每个压缩包含有5个dll,如下图:

其中32位于64位同版本的两个System.Data.SQLite压缩包中的SQLite.Designer.dll、System.Data.SQLite.dll、System.Data.SQLite.EF6.dll、System.Data.SQLite.Linq.dll都是相同一样的,只有32位于64位同版本SQLite.Interop.dll是不同大小的。

解决方法:

再把System.Data.SQLite.EF6.dll、System.Data.SQLite.Linq.dll与SQLite.Designer.dll放到System.Data.SQLite.dll文件夹内并在VS 2022代码添加新增这3个dll的引用,然后在项目右键属性->项目设计器->生成->(常规)目标平台->把'默认设置(Any CPU)'改为x86或X64使用这3中方法分别生成的3个exe,

(上图32位于64位文件里面分别是32位与64位的SQLite.Interop.dll文件)

然后把3个exe与上图的4个dll引用与含有32位、64位的SQLite.Interop.dll文件夹复制到U盘,接着在Window 7  64位系统分别运行这3个exe,发现Any CPU与x86位运行正常没问题,运行64位出现报错缺乏其它dll,如下图

去微软官网下载安装 vc_redist.exe就可以了,不会再次报错丢失vcruntime140.dll ,在微软官网下载(32位或64位,根据你Window系统位数选择下载),链接如下:

https://www.microsoft.com/zh-CN/download/details.aspx?id=48145

64位版下载地址:https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x64.exe

32位版下载地址:https://download.microsoft.com/download/9/3/F/93FCF1E7-E6A4-478B-96E7-D4B285925B00/vc_redist.x86.exe

选择位数下载,如下图:

或者到微软官网这个页面下载 最新受支持的 Visual C++ 可再发行程序包下载 | Microsoft Learn

我windows 7是64位系统,下载vc_redist.x64.exe位安装,再次打开我Windows10 64位系统C#编写的生成x64位的exe,再也没有报错,主要是缺dll引用,问题全部解决了,记录一下!

上面内容用于记录自己的学习与分享,分享让技术更进一步!

技术来源于思想自由、独立思考、辩证分析、逻辑思维与人类自由的创新,来服务于人类生活各种方便,而不是为了用技术打造思想鸿沟围城来制造愚蠢;技术是好的与坏的,好人用技术是更好的,坏人用技术是更坏的。推荐好书:乔治.奥威尔的《1984》、扎米亚京《我们》、阿道司·赫胥黎《美丽新世界》,有多个译本,选择喜欢且好的译本就行了;还有柏拉图的《理想国》、[法]孟德斯鸠的《论法的精神》、哈耶克《通向奴役之路》(港版)(港版翻译较好大陆版本,英语过硬的最好看英文原版),现在网店都有售卖!阅读好书,阅读大部分人未阅读过与课堂没有的书,阅读这片土地没有的知识就能增加一种思辨思维与智慧,才能走出狭隘思维偏见的洞穴!见多识广,才能避免单方面知识的偏见!

柏拉图在他的巨著《理想国》的第七卷里写到了洞穴理论阐明:一群从小被囚禁生活在洞穴里人,在洞穴外面的光线照明下,往内看是一片片黑影,往外看是光明的海阔天空,越看越明亮!

见多识广,包容的人更自信、思维更多元,包容好的文化使人更强大,越自信越包容越强大!包容让你用上网络、电话、各种电器、汽车、芯片、铁路、高铁................

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当我们试图加载一个格式正确程序时,计算机会遇到一些问题,因为那些程序无法被正确地识别和打开。这个错误消息"HRESULT:0x8007000b"是指Windows中的一种错误代码,它表示"HRESULT"发生了一些错误。HRESULT是一种用于描述COM组件之间交互结果的标准。它通常与COM组件相关,按照规定的格式生成。 这个错误通常出现在以下几种情况下: 1、程序被破坏或损坏:如果程序文件被破坏或损坏,计算机无法正确加载它,就会出现这个错误。 2、程序文件格式正确:如果程序文件格式正确,计算机也无法正确加载它,就会出现这个错误。 3、不兼容的操作系统或硬件:有时,程序可能只适用于特定的操作系统或硬件,如果我们试图在其他平台上运行它,也可能会出现这个错误。 为了解决这个问题,我们可以尝试以下一些方法: 1、重新下载或安装程序:如果程序文件被破坏或损坏,我们可以尝试重新下载或安装该程序。这通常可以解决文件损坏引起的问题。 2、尝试打开其他格式的文件:如果程序文件格式正确,我们可以尝试打开其他格式的文件,或者使用其他程序打开这个文件。这可能需要我们去查找一些文件转换工具。 3、查找适用于我们的操作系统或硬件的程序版本:如果我们确定程序适用于我们的操作系统或硬件,我们可以尝试查找与之兼容的程序版本。 总之,这个错误通常是由于程序文件损坏或格式正确引起的。我们可以尝试重新下载或安装程序,或者查找其他适用于我们的操作系统或硬件的程序版本,来解决这个问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值