[新手]请教关于嵌入式函数指针回调问题
本帖最后由 nybc114 于 2025-9-23 11:50 编辑比如像这种函数指针 void* (*Func)(int,int);
Func p1;
如果我想要用火山的变量接收这个P1那要用什么类型呢 @<p>=p1; 也就是说我在火山要把这个p变量定义成什么类型才能接收这个嵌入式中的p1
还有像 void* 这样的值是不是也是同理
取静态方法地址 直接传变整数也行 wangvoldp 发表于 2025-9-23 12:28
取静态方法地址 直接传变整数也行
传变整数报错 0000005
取那个什么地址最终还是要一个变量接收
主要是嵌入后能正常接收 wangvoldp 发表于 2025-9-23 12:28
取静态方法地址 直接传变整数也行
还有嵌入语句不能用火山的方法 对回调指针也不很熟, 我是方法接收变整数, 然后在嵌入里用强制类型转换为原来的
<火山程序 类型 = "通常" 版本 = 1 />
方法 注册函数 <公开 注释 = "注册全局函数" @禁止流程检查 = 真>
参数 FuncName <类型 = 文本型>
参数 Func <类型 = 变整数>
{
变量 Text <类型 = 字节集类 @输出名 = "Text">
Text = 文本到多字节 (FuncName)
@ lua_register((lua_State *)@<L>, (char*)Text.GetPtr(), (lua_CFunction)@<Func>);
}
本帖最后由 wangvoldp 于 2025-9-23 12:41 编辑
我也不很熟我是这样用的, 变整数接收, 嵌入调用再转换为方法lua_CFunction是定义的回调方法, 只需给变整数转换成这个就行了typedef int (*lua_CFunction)(lua_State *L);
<火山程序 类型 = "通常" 版本 = 1 />
方法 注册函数 <公开 注释 = "注册全局函数" @禁止流程检查 = 真>
参数 FuncName <类型 = 文本型>
参数 Func <类型 = 变整数>
{
变量 Text <类型 = 字节集类 @输出名 = "Text">
Text = 文本到多字节 (FuncName)
@ lua_register((lua_State *)@<L>, (char*)Text.GetPtr(), (lua_CFunction)@<Func>);
}
wangvoldp 发表于 2025-9-23 12:40
我也不很熟我是这样用的, 变整数接收, 嵌入调用再转换为方法lua_CFunction是定义的回调方法, 只需给变整数 ...
你这方案我不会用也可能是跟我这个需求不一样 我翻了翻官方的基础类封装发现可以用通用指针接收 但目前不知道怎么用这个通用指针调用方法 用变整数就行了啊,类型强转一下 @<p> = (INT_P)p1;
火山可以用“调用静态方法”调用这个函数指针,注意这个命令只支持 stdcall 的调用约定,你要 cdecl 就自己改一个好了,把代码里的 CALLBACK 改成 __cdecl
Xelloss0618 发表于 2025-9-23 14:57
用变整数就行了啊,类型强转一下 @ = (INT_P)p1;
火山可以用“调用静态方法”调用这个函数指针,注意这个命 ...
好的谢谢我研究研究
		页: 
[1]