VS2008打开SQLite数据库时出错无法找到 PInvoke DLL“SQLite.Interop.DLL”。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS2008打开SQLite数据库时出错无法找到 PInvoke DLL“SQLite.Interop.DLL”。相关的知识,希望对你有一定的参考价值。
用VS2008做的Mobile5智能设备项目在cn.Open();打开一个SQLite数据库时报错:无法找到 PInvoke DLL“SQLite.Interop.DLL”。连接数据库的代码如下
SQLiteConnection cn = new SQLiteConnection("data source=C:'\'sqlite'\'SQLiteDB;Pooling = true;FailIfMissing = false");
cn.Open();
extern "C"
#include "sqlite3.h"
;
sqlite3 * db = NULL; //声明sqlite关键结构指针
int result;
//打开数据库
//需要传入 db 这个指针的指针,因为 sqlite3_open 函数要为这个指针分配内存,还要
让db指针指向这个内存区
result = sqlite3_open( “c:\\\\Dcg_database.db”, &db );
if( result != SQLITE_OK )//数据库打开失败
return -1;
参考技术A dll、exe系统文件、网游文件,丢失、损坏、找不到等问题,可以使用可牛免费杀毒系统急救箱进行彻底修复。
VS2015 中任何和所有 C++ 项目的“打开 SDF 文件时出错”
【中文标题】VS2015 中任何和所有 C++ 项目的“打开 SDF 文件时出错”【英文标题】:"Error Opening SDF File" For Any and All C++ Projects in VS2015 【发布时间】:2015-11-29 07:31:16 【问题描述】:我在 VS2015 中创建或打开的任何 C++ 项目,我都会收到此错误:
创建或打开 C++ 浏览数据库文件 WHATEVER.sdf 时出错。 IntelliSense 和浏览信息将不适用于 C++ 项目。
确保已安装 Microsoft SQL Server Compact 4.0,并且没有其他应用程序正在访问该文件。如果此问题仍然存在,请删除文件并重新打开解决方案。
这意味着没有 IntelliSense 等,这是我首先使用 Visual Studio 的一半原因。我在 Windows 8.1 上使用 Visual Studio 2015 企业版,这发生在 所有 C++ 项目中。 SDF 文件实际上并没有被创建,因此没有要删除的文件。
到目前为止我已经尝试过什么;没有任何影响:
确保实际安装了 SQL Server Compact 4.0(确实安装了。)版本是 4.0sp1,无论如何我尝试用 4.0 替换它,但它告诉我已经存在更新的版本,无需执行任何操作。李> 以提升的(管理员)权限运行 VS。 在不同目录中创建项目(例如,在默认的 VS 项目路径下、在驱动器的根目录下、在另一个驱动器上、在其中没有空格的路径上等) 修复 Visual Studio 安装(两次)。 使用 SDF 文件的“后备位置”(在工具->选项->文本编辑器->C/C++->高级->后备位置下)效果完全相同。使用/Log
命令行选项运行 VS (devenv.exe
) 并打开一个项目然后关闭 VS 给了我一个 600KB+ 的 XML 文件,我无法阅读,粗略搜索后发现没有可疑条目。
任何提示/建议/解决方案?
【问题讨论】:
【参考方案1】:我自己刚刚在安装了 Visual Studio 2015 Update 1 的 Windows 10 上遇到了这个问题。
下载 SQL Server Compact 4.0 SP1 安装程序并修复安装,似乎很好地纠正了这种情况。
https://www.microsoft.com/en-gb/download/details.aspx?id=30709
【讨论】:
在这里操作。我实际上无权访问那个特定的系统 ATM。也许我可以在接下来的几周内检查一下。谢谢。 谢谢。非常好;)【参考方案2】:我刚刚在 Virtual Box 下运行 Windows 7 Professional 32 位 SP1(完全更新)上的 Visual Studio Professional 2012 Update 5 与此问题(OP 中的消息,并且 Intellisense 完全禁用)进行了一场小规模战争5.2.8(主机操作系统为Windows 10 Pro 64位,全面更新。)
我尝试了所有方法,包括上面 Jake Hendy 建议的解决方案 - 没有任何帮助。我什至尝试完全强制卸载,然后重新安装整个 Visual Studio。
当我回忆起几个月前我保存了 VM 的快照时,我发现了一条线索,当时一切正常 - 我尝试恢复到该快照,但问题仍然存在!这让我怀疑可能不是操作系统或安装/运行在其中的软件本身,而是实际上以某种方式导致问题的管理程序:我最近从 5.2.6 升级到了 Virtual Box 5.2.8。所以我重新下载并重新安装了 Virtual Box 5.2.6(在预先存在的 5.2.8 安装之上,基本上是替换它)——问题确实消失了!
因此,对于在 VM 内的旧版操作系统上运行旧版开发环境的任何人 - 如果您遇到此类问题,请考虑您的管理程序最近发生了哪些更新。显然,SQL Server Compact 4.0 SP1 在幕后做了一些相当挑剔或超级“高级”的事情,并且可以被操作环境深处的晦涩(可能与安全相关?)更改巧妙地破坏。一个应用程序是如何被这样的虚拟机管理程序更改破坏的,这有点令人震惊 - 而其他一切似乎仍然可以正常工作......
无论如何,这是我的特殊(诚然,相当极端的情况)问题和解决方案 - 虽然不太可能,但我希望这可以帮助处于类似情况的其他人。
【讨论】:
在这里操作。哇!这太有趣了。就我而言,我在实际硬件上运行,所以没有管理程序。但是感谢您发布答案。它可能会帮助一些可怜的灵魂......【参考方案3】:在我的情况下,我遇到了 VS2017 的问题。原来我有一个非法的后备位置:
Options
> Text Editor
> C/C++-
> Advanced
> Section Fallback Location
这不起作用:D:\\IPCH_fallback\\
。
这可行:D:\\IPCH_fallback
。
Always Use Fallback Location
和 Do Not Warn If Fallback Location Used
都是 True
。
一些懒惰的编程女巫或巫师在不检查的情况下添加了另一个\\
,多年的不适。
【讨论】:
以上是关于VS2008打开SQLite数据库时出错无法找到 PInvoke DLL“SQLite.Interop.DLL”。的主要内容,如果未能解决你的问题,请参考以下文章
VS2008 VC++/MFC 出错LNK2001与1120