我使用的是Windows Server 2003 32位计算机。使用该机器,我创建了一个COM组件,并在另一个应用程序中使用它,并有一个EXE文件。
现在我将EXE复制到另一台安装了Windows Server 2008,64位的计算机上。
当我尝试运行该EXE时,它显示类似“调试错误:此应用程序需要运行时并以不寻常的方式终止”。
比特(32位与64位)的兼容性是什么原因?在Windows Server 2008计算机上运行此操作需要什么?
答案 0 :(得分:2)
编译应用程序时,需要确保将其编译为32位。默认情况下,Visual Studio编译为“Any”。这导致您的应用程序的某些部分为32位并使用64位DLL。
答案 1 :(得分:1)
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
答案 2 :(得分:0)
这应该有效,感谢WOW64。 你编译为调试版或发行版? 它能找到你使用的所有参考文献吗?
答案 3 :(得分:0)
您使用的是哪种开发环境?听起来您的项目被配置为将C ++运行时DLL用于未安装在目标框上的版本。
您的开发环境中应该有一个VC_Redist.exe
,您可以在目标框上复制和执行,以安装必要的运行时程序集。
或者,转到每个项目,EXE和DLL,并确保Project Properties-> C / C ++ - >代码生成页面下的“运行时库”设置设置为1非DLL选项(/ MTd或/ MT)。这将绕过在目标PC上安装单独的运行时的需要,但会使您的EXE和DLL更大。