【问题标题】:Run Oracle Client in 32-bit mode on a 64-bit machine在 64 位机器上以 32 位模式运行 Oracle 客户端
【发布时间】:2013-05-08 11:04:29
【问题描述】:

我刚刚从 32 位 Windows 7 台式机转移到 64 位 Windows 7 笔记本电脑。我们正在开发一个 C# 程序,其中包含解决方案中的大约 60 个项目。我在尝试构建时不断收到以下错误:

Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed

显然,该错误是不言自明的,我正在尝试让我的整个解决方案以 32 位模式加载。我已经完成了每个项目并将目标平台设置为 x86,但我仍然收到此错误。我搜索了谷歌并看到了无数不同的方法,但我似乎无法解决这个问题。确保我的项目在 64 位机器上以 32 位模式运行的最佳方法是什么?

我正在使用 Visual Studio 2008。我目前正在考虑降级到 32 位,但我真的想避免这样做。

【问题讨论】:

  • 不清楚 - 您是在构建过程中还是在运行应用程序时收到此错误?
  • 构建成功,但是在加载第一页(它是一个基于 Web 的应用程序)时,在尝试连接到 Oracle DB 时会抛出此错误。
  • 您使用的是什么 Oracle 客户端(32 位或 64 位)?
  • 我都有。但我猜这个偏好应该是 32 位的,因为这是以前的工作。
  • 我发现我必须安装 32 位 Oracle 客户端(使用安装程序)才能工作,即使我在 64 位机器上运行。

标签: c# oracle visual-studio visual-studio-2008 32bit-64bit


【解决方案1】:

我发现即使你在 64 位机器上运行,你也必须安装 32 位 Oracle 客户端(你可以从他们的网站上download the installer)。

此外,在讨论期间,人们正在谈论 32 位模式等。这是您可以检查/设置 IIS 7 托管应用程序的方式。您不需要更改此设置,但我已在此处添加以供完整性/将来参考。

  • 启动 IIS 7 并展开服务器名称节点。
  • 点击Application Pools节点并找到 您正在使用的应用程序池。
  • 在右侧面板上单击高级设置...
  • 在出现的弹出框中选中Enabled 32-Bit Applications设置,这是从顶部开始的第三个选项。

【讨论】:

    【解决方案2】:

    您必须将主 .exe 文件更改为仅作为 32 位运行。您可以在 Visual Studio 中执行此操作 - 只需将 平台目标 从“任何 CPU”更改为“x86”。

    如果无法做到这一点,请使用 corflags.exe,它将现有的 exe 强制为 32 位应用程序。

    【讨论】:

    • 我在工具栏的下拉菜单中没有 x86,所以我想我将不得不使用 corflags.exe。从您友好地链接到我的页面上,我假设我需要运行“CorFlags.exe 程序集/32BIT+”程序集值到底是什么?谢谢。
    • 程序集 - 你的 exe 文件。在 Visual Studio 中,右键单击您的项目,选择属性。选择构建选项卡,在它上面你有平台目标。在这个组合中,您有任何 CPU、x86、x64
    • 我刚刚在 cmets 中读到您正在使用 Web 应用程序。您可以在 IIS 中设置:help.webcontrolcenter.com/KB/a1114/…
    • 我在 Visual Studio 中使用 ASP.NET 开发服务器中的构建。我将如何设置它?
    【解决方案3】:

    我几个月来一直在努力解决这个问题,终于解决了。我认为所有的帖子都很有帮助,但我有一个缺失的部分。我没有用于用户 DSN 或系统 DSN 的 Microsoft ODBC for Oracle 实例设置。我正在使用 Windows 8 机器。所以对我来说,我必须去一般的 Windows 搜索并输入 ODBC 并打开 ODBC 数据源管理器(32 位)。检查用户 DSN 选项卡或系统 DSN 选项卡上是否有 Microsoft ODBC for Oracle 设置。如果没有单击添加并选择 Microsoft ODBC for Oracle。填写您尝试点击的数据源的信息,然后单击“确定”。确保重新启动计算机,这最终对我有用。希望这对你们中的一些人有所帮助。

    【讨论】:

      【解决方案4】:

      您必须将主 .exe 文件更改为仅作为 32 位运行。您可以在 Visual Studio 中执行此操作 - 只需将平台目标从“任何 CPU”更改为“x86”。 https://msdn.microsoft.com/en-us/library/ms185328.aspx

      【讨论】:

        【解决方案5】:

        在我的情况下,我的机器上安装了 64 位 Oracle 客户端,但仍然出现相同的错误。因此,我分析了在我的应用程序中转到应用程序右键单击转到 -> 属性 -> Web 选项卡 如果您使用的是本地 IIS Web 服务器,请取消选中“使用 IIS Express”选项。 问题解决了。

        【讨论】:

          猜你喜欢
          • 2018-08-16
          • 1970-01-01
          • 2011-02-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-11
          • 2014-07-23
          • 1970-01-01
          相关资源
          最近更新 更多