Delphi AsyncPro和64位
我正在运行Delphi XE8并安装了适用于VCL 1.0的GetIt AsyncPro。当我编译32位的应用程序时,它运行良好,但在64位时失败。 失败是:Delphi AsyncPro和64位,delphi,win64,Delphi,Win64,我正在运行Delphi XE8并安装了适用于VCL 1.0的GetIt AsyncPro。当我编译32位的应用程序时,它运行良好,但在64位时失败。 失败是: [dcc64 Error] OoMisc.pas(2771): E2065 Unsatisfied forward or external declaration: 'Trim' 当我打开OoMisc.pas时,会看到: {$IFNDEF Win32} function Trim(const S : string) : string;
[dcc64 Error] OoMisc.pas(2771): E2065 Unsatisfied forward or external declaration: 'Trim'
当我打开OoMisc.pas时,会看到:
{$IFNDEF Win32}
function Trim(const S : string) : string;
{$ENDIF}
Trim
功能似乎未定义。该单元的uses子句中确实有SysUtils
。我敢打赌,当使用Win32
来区分Win16
时,这是Delphi 1的遗物。您可以安全地删除这些行。AsyncPro仅支持Win32平台。它不能按Win64位的原样使用
它包含大量32位内联ASM代码,必须用Pascal代码替换或移植到64位ASM代码。除此之外,可能还有其他与Win64位平台不兼容的地方
如果应用程序包含内联汇编(ASM)代码,则需要
检查ASM代码并进行以下更改:混合
64位中不支持带有Pascal代码的汇编语句
应用。将汇编语句替换为Pascal代码或
函数完全用汇编语言编写
将汇编代码从IA-32移植到Intel 64不能简单地通过
复制代码。考虑架构细节,例如
指针的大小和对齐。您还可以咨询
新指令的处理器手册。如果要编译相同的
针对不同体系结构的代码,使用条件定义。参见使用
“使用内联程序集”中跨平台代码的条件定义
代码。”
RAD Studio通过SSE4.2和AMD 3dNow支持Intel x86,并且
x64,Intel/AMD通过SSE4.2
更新: Johan Bontes提供了AsyncPro的Win64端口: 我的Github上有一个Win64版本: 它可以编译,但我还没有 能够全面地测试它。如果您有任何疑问,请随时提出问题 卡在任何地方
我将AsyncPro转换为XE8,但它只支持Win32。OoMisc.pas有一个
Trim
函数,该函数已从实现部分删除。然而,有人忘记将其从接口部分移除。这对x32来说并没有什么坏处,因为它在$IFNDEF中。
没有为x64定义Win32,因此编译器会抱怨。这个特殊问题的解决方案是删除以下3行,这3行是Delphi 1.0的
{$IFNDEF Win32}
function Trim(const S : string) : string;
{$ENDIF}
当然,这并不能使AsyncPro与x64兼容,因为还存在其他问题。我尝试删除函数定义,但后来又出现了一系列与之无关的错误。一定是别的原因。有人能够用64位应用程序编译ASPRO吗?感谢您对64位版本的介绍。我试试看