【问题标题】:How do I compile to x64 binary from a x86 platform running VS2008 Pro?如何从运行 VS2008 Pro 的 x86 平台编译为 x64 二进制文件?
【发布时间】:2008-10-04 16:35:52
【问题描述】:

我正在尝试为 x64 平台编译我的应用程序(使用 3rd 方库)。但是,从我的 VS2008 Pro 的 Build Configuration Manager 中选择 x64 似乎不起作用。确实创建了二进制文件,但我的客户端无法让它在 x64 上运行。

我想知道第 3 方 DLL 是否可能是原因。有人对此有任何想法吗?

【问题讨论】:

    标签: build x86 64-bit executable binary-compatibility


    【解决方案1】:

    您有第三方库的 x64 版本吗?如果不是,那你就不走运了。进程必须是完全 x86 或 x64,您不能混合和匹配库。如果库是 DLL,那么您仍然需要来自 x64 构建的导出库。

    在VS中选择x64配置在什么情况下不起作用?

    更新:如果您的应用是 .NET 和架构中立的,那么它将在 64 位操作系统上加载为 64 位。但是,如果它依赖于 32 位 DLL,那么这将在运行时失败。您可以使用 corflags 实用程序强制您的 exe 始终加载 32 位。

    【讨论】:

      【解决方案2】:

      正如罗伯·沃克所说。您可以在 x64 机器上使用 SysInternals 的“depends”程序了解更多信息。

      【讨论】:

      • Depends 不是来自 sysinternals。它曾经与 Visual Studio 一起分发,但现在可以在 dependencywalker.com 找到
      【解决方案3】:

      设法查明问题的根源。这是源代码混淆工具(Intellilock 1.1.0.4)中的设置(加密IL代码)之一,导致二进制文件无法在x64环境中运行。

      禁用此设置可解决问题。

      【讨论】:

        【解决方案4】:

        “从我的 VS2008 Pro 的 Build Configuration Manager 中选择 x64 似乎不起作用”
        我不确定你为什么会得到二进制文件,但请记住默认情况下不安装 x64 工具。返回并重新运行 VC2008 安装程序,进行自定义安装,并在树的 VC++ 位下,确保选中 64 位编译器的复选框。如果不是,请检查并运行安装。然后尝试你的构建。

        您确实需要 3rd 方 dll 的 64 位版本,并且您确实需要正确设置所有包含和 lib 路径以及正确的输出文件夹,但安装该工具是第一步。

        【讨论】:

          【解决方案5】:

          我的应用程序没有安装程序。我将它创建为一个“便携式应用程序”,以 .NET2.0 作为先决条件。

          我已向供应商发布了相同的请求。如果他们有 x64 位,仍在等待他们恢复。

          与此同时,我正在购买 x64 Vista 的副本以亲自测试它。我不能牺牲我的用户来为我测试这个。一旦我有新的更新,我会继续发布这个帖子。

          谢谢。

          【讨论】:

            猜你喜欢
            • 2017-09-19
            • 2012-02-16
            • 1970-01-01
            • 2011-01-09
            • 1970-01-01
            • 2011-12-03
            • 2011-10-08
            • 1970-01-01
            • 2012-03-08
            相关资源
            最近更新 更多