【问题标题】: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”程序了解更多信息。
【解决方案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 的副本以亲自测试它。我不能牺牲我的用户来为我测试这个。一旦我有新的更新,我会继续发布这个帖子。
谢谢。