【问题标题】:Need 64-bit SQLite DLL for managed C# application托管 C# 应用程序需要 64 位 SQLite DLL
【发布时间】:2012-05-28 07:57:39
【问题描述】:

我正在尝试将 SQLite 嵌入到我的便携式 C# .NET 2.0 应用程序中,而不是将 DLL 文件包含在分发文件夹中。但是,要嵌入 SQLite,我不能使用 PHXSoftware 提供的混合模式库。相反,我使用的是他们的“仅限托管”版本。

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

这就是我的不足之处。我找不到 64 位版本的 SQLite 与 32 位版本一起包含。任何人都可以帮忙吗?我敢说,有没有人有更好的想法?

【问题讨论】:

    标签: c# sqlite managed badimageformatexception


    【解决方案1】:

    我建议您自己构建源代码。这样做非常简单。特别是考虑到 Sqlite 提供amalgamation source

    这是我用于 64 位版本构建的编译器预处理器定义:

    • WIN64 NDEBUG
    • _WINDOWS
    • _USRDLL
    • NO_TCL
    • _CRT_SECURE_NO_DEPRECATE
    • 线程安全=1
    • TEMP_STORE=1
    • SQLITE_MAX_EXPR_DEPTH=0

    以下是我用于 32 位版本构建的编译器预处理器定义:

    • WIN32
    • NDEBUG
    • _WINDOWS
    • _USRDLL
    • NO_TCL
    • _CRT_SECURE_NO_DEPRECATE
    • 线程安全=1
    • TEMP_STORE=1
    • SQLITE_MAX_EXPR_DEPTH=0

    【讨论】:

    • 你能建议把这些定义放在哪里吗?我正在使用 autoconf 合并从我的 Linux VM 编译它。
    • 对不起,我天真地以为你在 Windows 上(我的错)。 Linux 方面我帮不了你。
    【解决方案2】:

    System.Data.SQLite fork 具有适用于 .Net 2、3.5 和 4 的 x86/x64 二进制文件。下载地址为 here

    更新:

    另一种可能的解决方案是将您的应用程序定位到 x86 平台并仅使用 x86 SQLite 库。如果您的应用程序不需要针对 x86 平台的 x64 功能,将大大降低部署的复杂性。

    【讨论】:

    • 不幸的是它确实需要 x64 =[
    • 另外,这些二进制文件似乎只包含嵌入了 sqlite3 的 System.Data.SQLite。我需要 sqlite3.dll 文件本身。
    猜你喜欢
    • 2015-10-02
    • 2010-12-11
    • 1970-01-01
    • 2011-09-14
    • 2013-04-11
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多