错误:【Unable to load DLL 'SQLite.Interop.dll': 找不到指定的模块 】解决方法和思路

2023-11-09

WinFrom程序,错误:Unable to load DLL 'SQLite.Interop.dll': 找不到指定的模块。 (Exception from HRESULT: 0x8007007E)

Stack Trace:
   at System.Data.SQLite.UnsafeNativeMethods.sqlite3_config_none(SQLiteConfigOpsEnum op)
   at System.Data.SQLite.SQLite3.StaticIsInitialized()
   at System.Data.SQLite.SQLiteLog.Initialize()
   at System.Data.SQLite.SQLiteConnection..ctor(String connectionString, Boolean parseViaFramework)
   at System.Data.SQLite.SQLiteConnection..ctor(String connectionString)
   at Utility.SQLiteCreator.createNewDatabase() in d:\Workspace_VS\OverseaPMS\Utility\SQLiteCreator.cs:line 97
   at RedmineIssuesMigrationTool.Program.createDBSQLite()

   at RedmineIssuesMigrationTool.Program.Main(String[] args) / System.Data.SQLite.SQLiteErrorCode sqlite3_config_none(System.Data.SQLite.SQLiteConfigOpsEnum) / Unable to load DLL 'SQLite.Interop.dll': 找不到指定的模块。 (Exception from HRESULT: 0x8007007E)

解决方法:

安装C++运行库:

Microsoft Visual C++ 2008 SP1 Redistributable(X86,X64)

Microsoft Visual C++ 2010 SP1 Redistributable(X86,X64)

Microsoft Visual C++ 2012 SP1 Redistributable(X86,X64)

背景

开发了一个WinForm程序,已经到了交付阶段。然而,打包的安装程序,在一部分人的计算机上可以运行,一部分的不行,提示“Unable to load DLL 'SQLite.Interop.dll': 找不到指定的模块”。这个问题真是让人头大。一直以为是程序缺少程序集“SQLite.Interop.dll”,但后面发现,把程序集打包进去后安装仍然出错,程序停止运行,并且提示相同错误。

后来,思考为什么一部分可以用,一部分的机器不能用,会不会是环境问题?然后,发现一个共性问题是.NET Framework4.5.2的机器都不能运行,在想是不是.NET Framework4.5.2版本问题,但根据程序设计,它应该是兼容.NET Framework4.5及以上版本的。后来,还是回到问题本身,想到与SQLite相关,那就是可能缺什么与SQLite相关的组件?然后,对比了能运行的计算机环境和不能运行的计算机环境,如下图一和图二。

发现,两个计算机安装的Microsoft Visual C++  SP1 Redistributable(X86,X64)库不一样,图二明显少于图一。一个尝试的方法诞生,那就把图二也安装与图一一样的Microsoft Visual C++  SP1 Redistributable(X86,X64)

结果证明,尝试成功了,安装了之后,程序可以正常运行了。

图一 可以运行的计算机安装的程序


图二 不能运行的计算机安装的程序


为什么要安装上面那些库?

答:其实我没有想太明白,只知道一些c++编译的软件运行需要上面这些库,SQLite是C++编译的,程序中用到了SQLite数据库,所以要安装。但是为什么要安装那么多版本的:2008(X86,X64)、2010(X86,X64)、2012(X86,X64),没有想清楚。(当时安装的时候,是每安装完一个版本的就去运行一下程序,到最后,都安装完毕,程序才正常运行起来。)

下面是百度到的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误:【Unable to load DLL 'SQLite.Interop.dll': 找不到指定的模块 】解决方法和思路 的相关文章

  • 错误集锦(1)

    下列软件包有未满足的依赖关系 xff1a sogoupinyin 依赖 fcitx gt 61 1 4 2 8 3 3 但是它还没有被安装 依赖 fcitx frontend gtk2 但是它还没有被安装 依赖 fcitx frontend
  • 【C++】CGAL学习笔记

    一 HELLO WORLD 1 官方文档 CGAL TUTORIALS 2 所有 CGAL 头文件都在子目录中 所有 CGAL 类和函数都在命名空间中 类以大写字母开头 全局函数以小写字母开头 常量全部大写 3 几何图元 如点 线等都定义在
  • 变量的声明和定义

    1 声明和定义的区别 变量声明规定了变量的类型和名字 而定义是在声明的基础上还开辟了存储空间 可能还会为变量初始化一个初始值 2 c 为什么要将声明和定义分开 c 支持分离式编译机制 允许将程序分割为若干个文件 每个文件可被独立编译 而为了
  • vector中reserve与resize区别

    vector中reserve与resize区别 一 基本概念 1 capacity 指容器在分配新的存储空间之前能存储的元素总数 2 size 指当前容器所存储的元素个数 二 reserve与resize 1 区别 1 reserve 只修
  • Pycharm乱码解决大全

    一 运行项目时控制台乱码 最直观的方法就是改控制台的默认编码方式 如果不行 就在Settings的Editor里点击FileEncoding 在下图中三个位置修改编码一致 一般为UTF 8或者GBK 最后Apply并确认后重新运行项目即可
  • 【C++习题笔记】谭浩强C++程序设计(第三版)第五章

    1 用筛法求100之内的素数 筛法又称为筛选法 具体做法是 先把N个自然数按次序排列起来 1不是质数 也不是合数 要划去 第二个数2是质数留下来 而把2后面所有能被2整除的数都划去 2后面第一个没划去的数是3 把3留下 再把3后面所有能被3
  • C++构造函数简单实现电梯控制程序

    对于电梯 属性之一就是位置 所以要实现这一程序 要设置电梯的初始位置和按下电梯按钮改变的电梯的位置 代码如下 include
  • C++实现MySQL数据库连接池

    C 实现MySQL数据库连接池 涉及技术 MySQL数据库编程 单例模式 STL容器 C 11多线程 线程互斥 线程互斥 线程同步通信和unique lock 智能指针shared ptr lambda表达式 生产者 消费者线程模型 项目背
  • C++绑定器和函数对象

    C 绑定器和函数对象 简介 C STL中的绑定器 bind1st operator 的第一个形参变量绑定一个确定的值 bind2nd operator 的第二个形参变量绑定一个确定的值 C Boost库 C 的Boost库中引入了bind绑
  • 错误:【Unable to load DLL 'SQLite.Interop.dll': 找不到指定的模块 】解决方法和思路

    WinFrom程序 错误 Unable to load DLL SQLite Interop dll 找不到指定的模块 Exception from HRESULT 0x8007007E Stack Trace at System Data
  • C++进阶篇5:字符串查找

    在STL中 字符串查找可以实现多种功能 例如 搜索单个字符 搜索子串 实现前向搜索 后向搜索 分别实现搜索第一个和最后一个满足条件的字符 或子串 要明确的一点是 所有查找find 函数的返回值均是size type类型 即无符号整数类型 该
  • C++对象调用优化

    C 对象调用优化 临时对象拷贝构造新对象 临时对象就不会产生 常见的对象调用过程 c 编译器对于对象构造的优化 用临时对象拷贝新对象的时候 临时对象就不产生了 直接构造新对象就可以了 include
  • 【C++习题笔记】谭浩强C++程序设计(第三版)第七章

    本文是谭浩强老师c 程序设计 第三版 第七章的习题总结 主要涉及结构体的内容 1 定义一个结构体变量 包括年 月 日 编写程序 要求输入年月日 程序能够计算并输出改日是本年中的第几天 注意闰年问题 include
  • C++ stack容器-50-栈容器基本概念和常用接口

    接着学习下一个容器 stack 栈容器 当然后面还要学习一个队列容器 两个有点相似一般一起对比和学习 本篇主要学习栈容器的基本概念和常用接口的基本使用 1 什么是stack stack是一种先进后出 First In Last Out FI
  • C++set容器set和multiset区别

    C set容器set和multiset区别 学习目标 掌握set和multiset的区别 区别 set不可以插入重复数据 而multiset可以 set插入数据的同时会返回插入结果 表示插入是否成功 multiset不会检测数据 因此可以插
  • 模板特化

    上一篇 模板与重载 里 我遇见了想同时使用模板函数与非模板函数的情况 后来才知道 其实并不需要 当我想对某些特定的类型进行特殊操作时 只需要使用模板特化就可以 所谓特化 就是说对于模板函数 对于某些类型可能需要特殊处理 所以进行特殊化 可以
  • C#学习笔记--关于银行存取款的小实验

    C 面向对象程序设计 编程模拟实现个人银行的存款业务 要求 1 提供两种账户 活期存款账户CheckingCustom和定期存款账户FixedCustom 2 创建活期账户时 必须提供账户名和开户金额 而账号则根据存款分类自动生成 3 不论
  • c++模板(函数模板,类中函数模板,类模板)

    作用 减少程序中的冗余信息 如 多个函数或类的除了参数类型外 其余都完全相同时 可以使用模板来减少重复信息 参考函数重载时 输入参数数量也相同的情况 1 函数模板 即建立一个通用函数 只不过该函数的返回类型和形参类型都不具体指定 其定义格式
  • C#访问SQLite数据库,实现数据的增删改查功能

    说明 本文的代码是基于Winform中举例的 经过实测可用 1 封装Sqlite操作类 sqLiteHelper using System using System Collections Generic using System Linq
  • C++模板-33-类模板和函数模板的区别

    这篇开始学习类模板相关知识 本篇主要学习什么是类模板 还有类模板和函数模板的区别 1 类模板语法 template

随机推荐

  • 【论文阅读】基于深度学习的时序预测——Informer

    系列文章链接 论文一 2020 Informer 长时序数据预测 论文二 2021 Autoformer 长序列数据预测 论文三 2022 FEDformer 长序列数据预测 论文四 2022 Non Stationary Transfor
  • Vue下载txt格式的文件

    2023年07月26日 天气 多云转阴 今天在做导出文件的时候 因包含有txt格式的文件 在导出的时候 浏览器会自动解析txt文件 而不是下载 于是快刀斩乱麻搜索资料 并结合总结 运用项目中 大功告成一半 因为导出时成功了 但txt文件下载
  • 根轨迹法学习

    根轨迹法 随着低频环路增益的变化 追踪闭环传递函数的极点和零点在复平面上的变化趋势 其中相角条件是决定根轨迹的充要条件 s平面上一点若满足相角条件 则一定在根轨迹上 幅值条件为必要条件 再通过幅值方程求出K值 K即为1 betaH中beta
  • 二阶段目标检测介绍

    二阶段目标检测算法 RCNN 家族 是目标检测中最经典的算法之一 有 R CNN gt Fast R CNN gt Faster R CNN 每一代的变化以及目的性都明确 也是目标检测领域二阶段检测必会的算法之一 如果想对目标检测有更多了解
  • VUE 构建清除注释、依赖包版本号

    问题 vue项目构建生成的js文件包含一些注释 里面含使用的依赖包及版本信息 可能会对网站造成危害 那么如何清除掉这些注释呢 解决方法 首先查看项目里webpack的版本号 npm list webpack 根据webpack版本号更新 h
  • Java解析省份城市

    Java解析省份城市 json文件 ps 地址可能不全 仅供参考 格式化导入地址 param address return public String formatAddr String address if address null re
  • 淘宝性能自动化测试平台搭建过程

    导读 ID TOP100case 淘宝网的性能测试自动化平台具备了分布式 高并发 低成本 可扩展等特性的性能测试平台工具 它包括性能项目管理 环境管理 脚本管理 场景管理 任务管理 监控管理 结果管理等模块 以及前端性能测试模块 性能测试报
  • 解决Makefile: recipe for target ‘xxx‘ failed

    author daisy skye的博客 CSDN博客 嵌入式 Qt Linux领域博主 问题 在android编译Kernel调用makefile引起的recipe for target 很多文章写的是由于编译文件路径引起或者是makef
  • 模型调优:验证集的作用(就是为了调整超参数)

    一 总结 一句话总结 验证集的作用就是为了调整超参数 1 超参数 超参数的值不是学习出来的 大多数机器学习算法都有超参数 可以设置来控制算法行为 超参数的值不是通过学习算法本身学习出来的 超参数如果学习太难优化 有时一个选项被设为学习算法不
  • inner join on, left join on, right join on讲解(转载)

    看了后面的操作实例 一切都明白了 1 理论 只要两个表的公共字段有匹配值 就将这两个表中的记录组合起来 个人理解 以一个共同的字段求两个表中符合要求的交集 并将每个表符合要求的记录以共同的字段为牵引合并起来 语法 FROM table1 I
  • 【新学期】双非本科大三学长经验分享

    一 自我介绍 大家好 我是一名双非二本人工智能专业的大三在读生 说起我的个人经历 其实没啥经历 大一大二两年的时间都是游走于学院的活动 平时没事搞搞团结 喜欢热闹 聚餐 搞素拓活动 所以 在学习方面就没有很下功夫 上课听了也是听不听的吧 反
  • [Vue]插件

    前言 系列文章目录 Vue 目录 老师的课件笔记 不含视频 https www aliyundrive com s B8sDe5u56BU 笔记在线版 https note youdao com s 5vP46EPC 视频 尚硅谷Vue2
  • 三菱FX2NPLC 定时器和计数器(1)

    今天学习了李金城老师的PLC基础课程第18课时和第19课时有关三菱PLC的定时器和计数器的内容 现对相关内容进行整理 三菱PLC的定时器和计数器 1 1 定时器类型 1 1通用型定时器 1 2积算型定时器 2 定时器程序编制 2 1瞬时触点
  • go --timer

    定时器是什么 Golang 原生 time 包下可以用来执行一些定时任务或者是周期性的任务的一个工具 本文基于 Go 1 14 如果以下文章有哪里不对或者问题的地方 欢迎讨论学习 定时器的日常使用 Timer 相关 func NewTime
  • IOException: 文件名、目录名或卷标语法不正确

    问题描述 创建文件夹或者文件的时候报的异常 解决过程 在电脑上新增一个名字为 我的我的 lt gt gt fdvd lt 文件 会发现提示如下 把违法的字符给替换掉即可 public static String replaceIllegal
  • SPI四种模式区别

    SPI四种模式区别 spi四种模式SPI的相位 CPHA 和极性 CPOL 分别可以为0或1 对应的4种组合构成了SPI的4种模式 mode Mode 0 CPOL 0 CPHA 0 Mode 1 CPOL 0 CPHA 1 Mode 2
  • react 实现表格列表拖拽排序

    问题描述 在项目开发中 遇到这样一个需求 需要对表格里面的数据进行拖拽排序 效果图如下所示 思路 安装两个插件 react sortable hoc 或者 react beautiful dnd array move npm install
  • Darts解读

    如果没看过这篇paper 可以先去看一下翻译过的版本Darts译文 整篇paper主要分了三大部分 分别是INTRODUCTION DIFFERENTIABLE ARCHITECTURE SEARCH EXPERIMENTS AND RES
  • IDEA2022.3.2创建第一个SpringMVC项目

    1 创建Maven的web工程 导入相关坐标
  • 错误:【Unable to load DLL 'SQLite.Interop.dll': 找不到指定的模块 】解决方法和思路

    WinFrom程序 错误 Unable to load DLL SQLite Interop dll 找不到指定的模块 Exception from HRESULT 0x8007007E Stack Trace at System Data