【发布时间】:2012-11-08 04:08:29
【问题描述】:
现在我想将void* 指针传递给Lua,使用userdata?
如何做到这一点?
顺便说一句,我使用了 luabind,但它不能将 void* 指针传递给 Lua 堆栈,这很烦人!你们能帮帮我吗?
struct Event
{
A* a;
B* b;
...
};
Event *e;
void* instance = (void*)e;
// param is a parameter that is passed from Lua script. param is a Event object. And I cast it into a void* type
string Answer(void* param)
{
WorkEvent *pWorkEvent = static_cast<WorkEvent*>(param);
ASSERT_RET(pWorkEvent, NULL);
string call_id = pWorkEvent->GetCallId();
CCmThreadManager::TType thrd_id = pWorkEvent->GetHandleThrdID();
Coroutine *pco = pWorkEvent->m_pco;
【问题讨论】:
-
你尝试了什么?请显示您的代码。哪个版本的
lua在哪个系统上? -
string Answer(void* param) { WorkEvent *pWorkEvent = static_cast
(param); ASSERT_RET(pWorkEvent, NULL);字符串 call_id = pWorkEvent->GetCallId(); CCmThreadManager::TType thrd_id = pWorkEvent->GetHandleThrdID();协程 *pco = pWorkEvent->m_pco; -
请编辑您的问题并将您的代码放在问题中,而不是在 cmets 中。
-
相关代码我已经贴出来了。
-
你试过阅读Programming in Lua吗?那么,为什么在使用 LuaBind 时要传递一个 void* 呢? LuaBind 在那里,因此您可以安全地从 Lua 操作 C++ 对象。