2012-05-21 58 views
2

我试图将SQLite嵌入到我的可移植C#.NET 2.0应用程序中,而不是将DLL文件包含在分发文件夹中。但是,为了嵌入SQLite,我无法使用PHXSoftware提供的混合模式库。相反,我正在使用他们的“仅管理”版本。需要用于托管C#应用程序的64位SQLite DLL

这适用于32位计算机,但在64位计算机上运行时会引发格式异常。正如我从这里找到的:http://sqlite.phxsoftware.com/forums/p/2564/9939.aspx我需要在使用托管库之前首先手动以所需体系结构格式加载非托管sqlite3.dll。

这就是我缺乏的地方。我无法找到64位版本的SQLite以及32位版本。谁能帮忙?我敢说,有没有人有更好的想法?

回答

0

System.Data.SQLite fork有x86/x64二进制文件,用于.Net 2,3.5和4.下载内容为here

更新:

另一种可能的解决方案是针对您的x86平台的应用程序,只是使用了x86的SQLite库。如果您的应用程序不需要以x86平台为目标的x64功能,将大大降低部署的复杂性。

+0

不幸的是它需要64 = [ – CJxD

+0

另外,这些二进制代码看来仅包括System.Data.SQLite嵌入sqlite3的。我自己需要sqlite3.dll文件。 – CJxD

1

我建议你自己建立源代码。这是非常简单的事情。特别是考虑Sqlite提供amalgamation source

下面是编译预处理器定义了我使用的64位的版本生成:

  • WIN64 NDEBUG
  • _WINDOWS
  • _USRDLL
  • NO_TCL
  • _CRT_SECURE_NO_DEPRECATE
  • THREADSAFE = 1
  • TEMP_STORE = 1
  • SQLITE_MAX_EXPR_DEPTH = 0

下面是编译预处理器定义了我使用的32位的版本生成:

  • WIN32
  • NDEBUG
  • _WINDOWS
  • _USRDLL
  • NO_TCL
  • _CRT_SECURE_NO_DE PRECATE
  • THREADSAFE = 1
  • TEMP_STORE = 1
  • SQLITE_MAX_EXPR_DEPTH = 0
+0

我会在一段时间内尝试一下,谢谢=] – CJxD

+0

你可以建议在何处放置这些定义?我正在使用autoconf合并从我的Linux VM进行编译。 – CJxD

+0

对不起,我天真地认为你是在Windows(我的坏)。我无法帮助你使用Linux。 – BitsEvolved

相关问题