这很可能是错误的标题,但我不知道如何描述它。我想要做的是从我的脚本语言(运行在虚拟机中)调用C++函数。我遇到了一些麻烦,想知道如何将参数传递给函数。动态C++函数参数
我最好的解决办法,到目前为止是这样做:
void func(int a) {
// Start param copy
char c;
char* par_start = &c - sizeof(char) - getCurrentFuncParamOffset();
copyCurrentParams(par_start);
// End copy
// Code
}
然后,调用函数我第一次把它暴露在VM,将参数给它。这是一些缩短的代码,但所有内容都被转换为void(*),以便将其存储在散列表中。
EXPOSE(test, int);
vm.call("test", 12)
EXPOSE抓取指向函数测试的指针,并存储它需要单个进入的地方。它将指针作为void(*)()存储在散列表中,以便当我想调用它时,我可以从VM拨打电话并解析它。然后,函数内部的代码(我从问题中的宏中扩展而来)会将从调用传递给虚拟机的参数复制到函数的参数中。
这可行,但它不是最优雅的解决方案,尤其是因为我将不得不为每个我想为脚本公开的函数调用宏。有更好的解决方案吗?谢谢。
您在“然后我做”下的部分与上述部分没有任何关联。真的很难理解足够的帮助。 – AndyG
@AndyG我很抱歉,希望编辑清除它 – BlueSpud
不完全。什么是EXPOSE宏?什么是“cppFunction”? void(* ptr)()=(void(*)());'? – AndyG