【问题标题】:Can a Windows Server 2003 32-bit machine application work for a Windows Server 2008 64-bit machine?Windows Server 2003 32 位计算机应用程序能否在 Windows Server 2008 64 位计算机上运行?
【发布时间】:2009-06-15 10:26:49
【问题描述】:

我使用的是 Windows Server 2003 32 位机器。使用那台机器,我创建了一个 COM 组件并在另一个应用程序中使用它并拥有一个 EXE 文件。

现在我将该 EXE 复制到另一台安装了 64 位 Windows Server 2008 的计算机上。

当我尝试运行该 EXE 时,它显示类似“调试错误:此应用程序需要运行时并以不寻常的方式终止”。

位(32 位与 64 位)兼容性是造成此问题的原因吗?在 Windows Server 2008 机器上运行它需要什么?

【问题讨论】:

  • 请添加 REAL 错误信息。这是一个非常不寻常的
  • 这个问题和stackoverflow.com/questions/981447/…有什么不同?
  • 否两者都相似,但我的问题没有得到纠正……那是我正在尝试所有可能的方式。,........
  • stackoverflow.com/questions/981447/… 的欺骗,该用户发布了多个欺骗
  • @Cute:仅仅添加更多的骗子并不能解决你的问题。

标签: c# windows debugging com windows-server-2008


【解决方案1】:

当您编译您的应用程序时,您需要确保将其编译为 32 位。默认情况下,Visual Studio 编译为“任何”。这会导致您的应用程序的某些部分是 32 位并使用 64 位 DLL。

【讨论】:

  • 我的test.exe不会在w2k8机器上运行怎么办??/
【解决方案2】:

Server 2008 内置的 .NET 框架是 v3.0。您的应用程序是否需要 .NET v3.5?如果是这样,您需要在 Server 2008 中安装 .NET 3.5 Redistributable 软件包。

http://download.microsoft.com/download/6/0/f/60fc5854-3cb8-4892-b6db-bd4f42510f28/dotnetfx35.exe

【讨论】:

    【解决方案3】:

    感谢WOW64,它应该可以工作。 您编译为调试版还是发布版? 它能否找到您正在使用的所有参考资料?

    【讨论】:

    • 但是即使我在 w2k8 64 位机器中使用 regasm.exe 注册了 com,我的应用程序也不会运行...
    【解决方案4】:

    您使用的是什么开发环境?听起来您的项目已配置为使用 C++ 运行时 DLL 来获取目标框上未安装的版本。

    您的开发环境中的某处应该有一个VC_Redist.exe,您可以在目标框上复制并执行它以安装必要的运行时程序集。

    或者,转到每个项目、EXE 和 DLL,并确保将 Project Properties->C/C++->Code Generation 页面下的“Runtime Library”设置设置为非 DLL 选项(/MTd 或 /MT)。这将绕过在目标 PC 上安装单独运行时的需要,但会使您的 EXE 和 DLL 更大一些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-27
      相关资源
      最近更新 更多