3
我希望能够实例化C++类的实例并将其作为参数传递给JavaScript回调。该类继承自ObjectWrap
,可用于Node.js并在其中使用。实例化并将C++对象传递给Node.js函数V8
如果上述实例来自JavaScript,我可以将同一类的实例传递给回调函数。
这是什么,我需要做一个基本的例子:
MyClass *instance = new MyClass();
// If was passed as the first param to this method, commit is set as below, this code works.
// MyClass *instance = ObjectWrap::Unwrap<MyClass>(args[0]->ToObject());
// Assign some property values to commit
Handle<Value> argv[] = { instance->handle_ };
ar->callback->Call(Context::GetCurrent()->Global(), 1, argv);
这不起作用,而是出现segfaults。 gdb
告诉我:
Program received signal EXC_BAD_ACCESS, Could not access memory.
我会如何修改我的代码,让我通过我的instance
回调?
更新:commit.cc:有问题的类可以在Github上查看。
你为什么试图通过全班?当然,你可以找到一个更清洁的方式来进行节点和C++之间的通信? 也许你可以设计你的项目,以便C++程序输出你需要的数据到标准输入,你的js程序从标准输入中得到它。 – Plato 2013-03-04 14:08:32
因为模块包装库的功能。你所建议的不是一种选择。 – 2013-03-04 18:38:52
你应该使用MyClass :: New从C++实例化你可能定义为构造函数的对象。否则,您的句柄引用不会启动。 – Floby 2013-03-04 19:28:40