gpt4 book ai didi

c# - x86 DLL 有效但 x64 DLL 无效

转载 作者:太空宇宙 更新时间:2023-11-03 17:50:38 24 4
gpt4 key购买 nike

我正在尝试将 System.Data.SQLite 包含在我的项目中,该项目使用 C# 编码并使用 .NET Framework v4。我有点困惑...我运行的是 Windows 8.1 x64,项目的平台目标设置为 Any CPU。如果我包含 x64 版本的 System.Data.SQLite.dll 然后我得到一个错误提示 The type or namespace name 'SQLite' does not exist in the namespace 'System.Data' (您是否缺少程序集引用?)。但是,如果我包含 System.Data.SQLite.dllx86 版本,那么它可以正常编译。不应该反过来吗(x86 版本不应该编译)?由于 x86 版本有效,那么我可以在编译的项目中只包含 x86 版本吗?如果我需要包含 x86 和 x64 版本的 System.Data.SQLite.dll(以及 SQLite.Interop.dll),那么我该怎么做那?我还应该注意 System.Data.SQLite 的版本是 v1.0.94.0(适用于 .NET Framework 4)。

最佳答案

除非您需要 x64 版本,否则您可以只包含 x86 版本并将您的项目构建为 x86。这对大多数项目来说都是安全的,除非您需要 64 位地址空间。

仅当您的应用是纯托管且不依赖于特定架构时,才应使用 AnyCPU。使用 SQLite 等 native 代码时,应用应始终设置特定的平台目标。

SQLite 的 x86 版本而不是 x64 的原因是在现代版本的 Visual Studio 中,AnyCPU 配置默认为/platform:anycpu32bitpreferred 而不是/platform:anycpu。对于 anycpu32bitpreferred,应用程序将尽可能使用 32 位模式,并且仅当 32 位模式不可用时才使用 64 位模式。

关于c# - x86 DLL 有效但 x64 DLL 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28734610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com