我正在用 Delphi 编写一个程序,其中包括一个包含一些汇编代码(Pipes.pas)的库。当我运行调用一个名为 StdWndProc 的函数的代码时,我遇到了访问冲突。该过程是一个包含汇编代码的汇编函数。
不久前,我更新了这段代码(Pipes.pas)以包含 unicode 支持和其他内容,但我不知道这个程序集在做什么。关于这里出了什么问题的任何想法?
我在 64 位机器上运行,可能是这个程序集是 32 位的,并且不能在 64 位处理器上正确运行(该项目针对 32 位构建)。
32 位进程执行 32 位代码。该代码是从汇编程序还是 Delphi 或其他语言编译的并不重要。
不管机器是 64 位还是 32 位,32 位进程运行 32 位代码。在 64 位机器上,32 位进程在名为 WOW64 的模拟 32 位机器中运行。
从概念上讲,您正在尝试的是可能的,因此结论是您的代码存在错误。
正如David Heffernan指出的那样,您的问题的原因几乎不可能是操作系统架构。
如果您的代码在 32 位机器上运行没有错误,但在 64 位机器上运行失败,则可能是操作系统问题。这可能是由于使用了 32 位独占目录(如SD:\Program Files在 64 位窗口上称为SD:\Program Files(x86)对于 32 位程序)、注册表反射(这会导致您的程序在Wow3264Node键下存储注册表数据),甚至使用旧的 16 位DLL(不能在 wow3264 下运行),但这是非常罕见的情况,因为它是 2013...
为了能够提供帮助,我需要有关您的代码如何无法正确运行的更多详细信息。
(请注意,原来的问题已经回答了,我只是想提供一些更有用的帮助。)