我在 Visual Studio 2012 中创建了一个小型 c# 程序,我使用了两个外部 dll 库。当我构建要发布的项目时,它会创建带有一堆其他文件的发布文件,包括我使用的外部 dll。它可以在我的计算机上运行,但如果我将整个发布文件复制到另一台计算机,它只会给我一条错误消息并退出。程序还需要运行什么?
错误信息是:
应用程序无法正确启动(0x000007b)。单击确定关闭应用程序。
我在 Visual Studio 2012 中创建了一个小型 c# 程序,我使用了两个外部 dll 库。当我构建要发布的项目时,它会创建带有一堆其他文件的发布文件,包括我使用的外部 dll。它可以在我的计算机上运行,但如果我将整个发布文件复制到另一台计算机,它只会给我一条错误消息并退出。程序还需要运行什么?
错误信息是:
应用程序无法正确启动(0x000007b)。单击确定关闭应用程序。
我怀疑您的错误代码实际上是0xC000007B (STATUS_INVALID_IMAGE_FORMAT),而不是 0x0000007B (INACCESSIBLE_BOOT_DEVICE)。当您的应用程序遇到 DLL 的 32 位和 64 位版本之间的运行时混淆时,前者很常见。
可能发生的情况是您的应用程序(比如 32 位)依赖于某个 DLL,称为 FOO.DLL。在本地计算机上运行时,您将在路径上选择正确版本的 32 位版本的 FOO.DLL。但是,当您部署到另一台机器时,您会从系统路径上的某个位置获取 64 位版本。当加载程序发现一个 64 位 DLL 试图加载到您的 32 位应用程序中时,将引发 INVALID_IMAGE_FORMAT 错误。
解决此问题的一种方法是识别 DLL 并使用您的应用程序重新分发正确的版本。