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