2010-03-17 69 views
1

使用Visual C#Express在64位系统(操作系统和机器)上:Visual C#Express:建立在64位,部署在32位?

我能够将目标构建平台设置为32位平台并构建我的应用程序。它在64位系统上运行良好。但是,当我在32位系统上运行相同的可执行文件时,出现“未处理的异常:System.IO.FileNotFoundException:无法找到指定的模块(异常来自HRESULT:0x8007007E)”窗体错误“

In一般是这个预期不起作用,或者我有一个依赖问题,因为错误意味着什么?

感谢,

RM

+0

你是如何在32位机器上安装应用程序的?你确定你已经安装了任何引用的dll吗? – ChrisF 2010-03-17 16:57:28

+0

@RM是否在机器上运行FusionLog?如果这是一个库导入,它应该告诉你哪一个没有解析,以及它所经历的依赖关系链。签出:http://msdn.microsoft.com/en-us/library/e74a18c4%28VS.71%29.aspx。 – GrayWizardx 2010-03-17 17:57:08

+0

如果这是最接近正确的答案,不要忘记信贷@Simon Linder。它会帮助你和他。欢迎来到SO! – GrayWizardx 2010-03-17 17:57:58

回答

1

应该工作。但似乎你的应用程序缺少一个DLL。在目标机器上用DependencyWalker检查您的应用程序。

+0

西蒙 - 试过了。在kernel32.dll中堆栈溢出依赖walker barfed(错误0xC0000409)。可能意味着某处有64位DLL。非常感谢。 – RdM 2010-03-17 17:24:23

+0

在DependencyWalker中,您还可以查看DLL是32位还是64位。 – 2010-03-17 17:31:51

0

听起来像你有一个不是32位的图书馆。缺少的库已经被其他海报覆盖了,所以我会说你有一个只有64位的库,并且当类型加载器正在检查以确保它匹配签名是错误的,因此它不会被加载。

如果您可以发布展示相同问题的示例项目(hello world)(无需导入第三方库),我们可能会进一步排除故障。

在您的构建项目中,确保所有正在构建的库都是32位,并确保将它们全部移到目标机器上。我更喜欢清除目标目录,然后放入文件,而不是覆盖。

+0

我认为就是这样。在Simon的文章中查看依赖walker的输出。 – RdM 2010-03-17 17:21:28

相关问题