Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 应用程序无法正确启动(0xc000007b)_Windows_Delphi_64 Bit - Fatal编程技术网

Windows 应用程序无法正确启动(0xc000007b)

Windows 应用程序无法正确启动(0xc000007b),windows,delphi,64-bit,Windows,Delphi,64 Bit,我有一个客户端/服务器应用程序,我一直在一台PC上开发。现在它需要两个串行端口,所以我从朋友那里借了一台PC 当我构建应用程序并尝试运行或调试它(无论是在Delphi IDE中还是从Windows文件管理器中)时,会出现错误“应用程序无法正确启动(0xc000007b)” 谷歌搜索并没有带来太多,但似乎表明这并不是特尔福特有的,而是发生在其他应用程序中。这似乎是由从64位应用程序调用32位DLL引起的,反之亦然 两台电脑都是64位Windows 7 两者都有Delphi Xe2入门版,只能处理

我有一个客户端/服务器应用程序,我一直在一台PC上开发。现在它需要两个串行端口,所以我从朋友那里借了一台PC

当我构建应用程序并尝试运行或调试它(无论是在Delphi IDE中还是从Windows文件管理器中)时,会出现错误“应用程序无法正确启动(0xc000007b)”

谷歌搜索并没有带来太多,但似乎表明这并不是特尔福特有的,而是发生在其他应用程序中。这似乎是由从64位应用程序调用32位DLL引起的,反之亦然

  • 两台电脑都是64位Windows 7
  • 两者都有Delphi Xe2入门版,只能处理32位
  • 该应用程序在我的电脑上运行正常,但在我朋友的电脑上运行不正常
  • 其他Delphi应用程序在两台PC上都运行良好

有谁能给我一个关于如何追踪这一点的提示吗?

首先,我建议您使用无法解决加载时间依赖关系的方法测试您的应用程序及其依赖关系之间是否存在问题。调试这个的最简单方法是使用。使用配置文件选项获取加载过程的诊断输出。这将确定故障点,并指导您找到解决方案


此错误最常见的原因是试图将64位DLL加载到32位进程中,反之亦然。

在这种情况下,调试调试器可能很有用。基本上,如果您遵循,您可以运行两个ide,其中一个将调试到另一个。如果在一个应用程序中取消应用程序,有时可能会捕捉到未捕获的错误。值得一试。

这是一个缺少的dll。 可能,与com端口一起工作的dll具有未解析的dll依赖关系。
您可以使用依赖项步行器和windows调试器。例如,检查所有mfc库。此外,您还可以使用nrcomlib—它是使用com端口的优秀组件。

我最近遇到了一个问题,我正在开发一个应用程序(使用串行端口),它在我测试它的所有机器上都能工作,但有几个人遇到了这个错误

事实证明,所有发生错误的机器都运行Win7 x64,并且从未更新过


< >运行Windows更新修复了我的特定情况下的所有机器。

< P>我在VC++调试的机器上运行了VC++调试可执行的错误。构建一个发布版本并使用它来修复它。

刚刚为我的个人项目解决了这个问题(多亏了Dries)。对我来说,这是因为项目路径太长。将.sln保存到较短的路径(C:/MyProjects)并从那里编译后,它运行时没有出现错误。

实际上,此错误表明图像格式无效。然而,为什么会发生这种情况,以及错误代码通常意味着什么?实际上,当您试图运行一个为64位Windows操作系统设计或打算使用64位Windows操作系统的程序,但您的计算机运行在32位操作系统上时,可能会出现这种情况

可能的原因:

  • Microsoft Visual C++
  • 需要重新启动吗
  • DirectX
  • .NET框架
  • 需要重新安装吗
  • 需要以管理员身份运行应用程序

来源:

我尝试了这里指定的所有方法,找到了另一个答案。我不得不用32位DLL编译我的应用程序。我构建了32位和64位的库,但将我的
路径设置为64位库。在我重新编译了我的应用程序(代码中也做了一些更改)之后,我遇到了这个可怕的错误,挣扎了两天。最后,在尝试了许多其他方法之后,我更改了路径,将32位DLL放在64位DLL之前(它们的名称相同)。它成功了。为了完整起见,我将其添加到这里。

还可以将“依赖项”下载并解压缩到放置wget.exe的文件夹中

然后,在同一文件夹中会有一些lib*.dll文件和wget.exe,它应该可以正常工作


(我在这里也回答了我最初发现的问题。)

我在使用Microsoft Visual Studio 2012开发客户机-服务器应用程序时遇到了同样的问题

如果使用VisualStudio开发应用程序,则必须确保新的(即计算机未开发的计算机)具有适当的微软VisualC++可再分发软件包。根据需要,您需要Visual C++可重新分发包的正确的年份和比特版本(即32位x86和64位x64)。

VisualC++可重分配包安装运行Visual Studio.< /P>所需的运行C++应用程序的运行时组件。 这里有一个链接到

您可以通过进入控制面板->程序->程序和功能来检查安装了哪些版本

下面是我如何得到这个错误并修复它的:

1) 我在计算机上使用Visual Studio 2012开发了一个32位应用程序。 让我们把我的电脑叫做电脑吧

2) 我在另一台计算机上安装了.exe和相关文件,我们称之为ComputerB

3) 在ComputerB上,我运行了.exe并收到了错误消息

< P> 4)在计算机B上,我查看了程序和特征,没有看到Visual C++ 2012可重分发(X64)。 < P> 5)在计算机B上,我对Visual C++ 2012进行重新分配,选择并安装了X64版本。
6) 在ComputerB上,我在ComputerB上运行了.exe,但没有收到错误消息。

在前面的回答中提到,使用dependency walker是一种方法,在我的情况下(我的应用程序不断失败,错误代码不断),dependency walker显示了一些不相关的dll

最后,我发现我可以通过进入“profile”菜单来运行评测,它将运行应用程序并在导致问题的确切dll处停止!我发现一个32位dll是因为路径而被选中的,并修复了它

在我的cas中
#if defined(_WIN64)
#pragma comment(linker, "\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df'\"")
#endif
<!-- Dependancy on Common Controls version 6 -->
<dependency>
    <dependentAssembly>
        <assemblyIdentity
                type="win32"
                name="Microsoft.Windows.Common-Controls"
                version="6.0.0.0"
                processorArchitecture="X86"
                publicKeyToken="6595b64144ccf1df"
                language="*"/>
    </dependentAssembly>
</dependency>
<!-- Dependancy on Common Controls version 6 -->
<dependency>
    <dependentAssembly>
        <assemblyIdentity
                type="win32"
                name="Microsoft.Windows.Common-Controls"
                version="6.0.0.0"
                processorArchitecture="*"
                publicKeyToken="6595b64144ccf1df"
                language="*"/>
    </dependentAssembly>
</dependency>