Wz132 Sqlite官网:可以从官网下载源码

前端之家收集整理的这篇文章主要介绍了Wz132 Sqlite官网:可以从官网下载源码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

原文:Wz132 Sqlite官网:可以从官网下载源码

一.sqlite资源链接

(1)Wz132 sqlite官网:可以从官网下载源码、或下载已经编译好的二进制版本。支持的系统包括:Linux、MacOS、Windows、.NET。

(2)sqliteStudio:好用的sqlite可视化管理器。

二.在.NET中使用sqlite

从官网下载.NET版本的sqlite,其主要包括两个dll:sqlite.Interop.dll、System.Data.sqlite.dll。

(1)System.Data.sqlite.dll是一个标准的托管dll,我们可以直接在.NET项目中引用并使用它,就像使用.NET自带的System.Data命名空间中的各个对象一样。

(2)sqlite.Interop.dll是一个非托管的dll,是sqlite引擎核心,我们需要将其拷贝到运行目录下,在运行时,它会被System.Data.sqlite.dll调用

三.让sqlite脱离VC++运行时

我们在项目开发完毕后测试的过程中发现,使用了sqlite的客户端程序在某些机器上运行时会报错,如下所示:

无法加载 DLL"sqlite.Interop.DLL";由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。(异常来自 HRESULT:0x800736B1)

经过一番折腾,才发现是这些机器上没有安装VC++运行时(Visual C++ 2005 SP1 runtime),而sqlite.Interop.dll的运行是需要VC++运行时支持的。这点太不友好了。我们的项目是基于.NET 2.0开发的,windows xp sp1 及以上版本都自带了这个Framework,而这些机器不一定安装了VC++运行时。所以我第一反应就是,尝试让sqlite在没有安装VC++运行时的机器上也能正常运行。

1.方案一

我baidu了一下,有个似乎可行的方案是这样的:将msvcm80.dll、msvcp80.dll、msvcr80.dll这几个动态库也放到运行目录下。这个方案我不太喜欢,于是我尝试自己动手解决问题。

2.方案二

凭借我还未完全忘记的一点VC++基础,我知道VC++程序在编译时可以选择是动态链接到依赖的库还是静态链接,如果是静态连接,编译生成的二进制程序中就相当于包含了一份依赖库的拷贝。所以,我的想法是,重新编译sqlite.Interop.dll,使其静态链接到VC++运行库。我下载了sqlite的源码,用VS2010打开



猜你在找的Sqlite相关文章