Vanyogin 发表于 2022-3-8 13:18:32

为什么火山PC的函数调用协议还是__stdcall的?

最近在尝试使用火山LUA,发现注册的函数调用之后程序就立即终止了,一直找不到是什么问题,
找到了易语言大佬kyozy的lua中文修改版,
才发现易语言的要将回调函数改为__stdcall协议才能用。
没想到火山的也要改为__stdcall协议才能用......


所以为什么火山PC的函数调用协议还是__stdcall的?


福寿 发表于 2022-3-9 15:27:37

Vanyogin 发表于 2022-3-9 09:55
小白一枚,不会改,看来只能用64位了。

属性名那里设置为 @视窗.前缀文本 @__cdecl

tmf19901124 发表于 2022-3-8 14:04:06

火山的静态方法是stdcall,成员函数是cdecl

福寿 发表于 2022-3-8 17:19:02

火山默认的就是__stdcall,如果lua是原生代码,回调函数必须要设置为__cdecl,这是32位程序的一个历史遗留问题,64位就不需要设置了,因为64位就只有一种调用约定,采用的是变形的__fastcall

Vanyogin 发表于 2022-3-9 09:55:37

福寿 发表于 2022-3-8 17:19
火山默认的就是__stdcall,如果lua是原生代码,回调函数必须要设置为__cdecl,这是32位程序的一个历史遗留 ...

小白一枚,不会改,看来只能用64位了。
页: [1]
查看完整版本: 为什么火山PC的函数调用协议还是__stdcall的?