我说了,vcl 是 delphi 写的,而 delphi 有一堆跟 c++ 不兼容的设计。
比如 delphi 的 class method 可以是 virtual 的,同时 constructor/destructor 也可以是 virtual 并且在 vcl 里全都按照这种方式这样实现的。
32 delphi 有自己特殊的一套 calling convention,按照 eax、ecx、edx 的顺序压栈(后面俩顺序可能不对,十多年没碰记不清了),而同期其它家的 fastcall 是不用 eax 的。所以当年在 delphi 有3种 abi 的声明方式,win32 api 使用方式的叫 stdcall,此外为了兼容还有 cdecl,而 delphi 自己的 fastcall 跟其它家的都不一样。
你就用了那么一小点儿,根本不知道有多少坑,随便搜了一个:
https://stackoverflow.com/a/71036705
【 在 ooolinux 的大作中提到: 】
: 不管哪种语言,编程都要小心,尤其是C/C++带指针操作的,跟CB没有关系。
: CB用VCL类库是原生应用,只是增加几个关键字适配VCL,没有一堆东西。
: 是不是说,Python调用C语言的库、C#调用Win32 API都不能用,都不伦不类?
: ...................
--
FROM 222.153.175.*