缺少符号的问题 - 不推荐使用NewInstance。仅在与nw.js

时间:2016-08-17 16:47:03

标签: node.js v8 node-webkit

在我的项目中,我使用libvirt库。这些是libvirt api的节点绑定。由于这个问题可能与其他绑定案件有关,我在这里发表我的问题。 在使用npm install安装时,它会抛出警告(下面​​以一个为例)

../src/domain.cc: In static member function ‘static v8::Local<v8::Object> NLV::Domain::NewInstance(virDomainPtr)’:
../src/domain.cc:197:44: warning: ‘v8::Local<v8::Object> v8::Function::NewInstance() const’ is deprecated (declared at /home/mark/.node-gyp/6.3.1/include/node/v8.h:3243): Use maybe version [-Wdeprecated-declarations]
   Local<Object> object = ctor->NewInstance();
                                            ^

与普通节点应用程序一起使用时,后来不会出现任何问题。但是,当涉及nw.js时,由于使用了NewInstance,它会严重崩溃。有证据见:

....nwjs/nw: symbol lookup error: ..../project/node_modules/libvirt/
build/Release/libvirt.node: 
undefined symbol: _ZN2v816FunctionTemplate3NewEPNS_7IsolateEPFvRKNS_20FunctionCallbackInfoINS_5ValueEEEENS_5LocalIS4_EENSA_INS_9SignatureEEEi
    Aborted (core dumped)

此问题中的符号引用相同的方法 - NewInstance。

有问题的代码,纯粹的形式如下:

Domain::Domain(virDomainPtr handle) : NLVObject(handle) {}
Local<Object> Domain::NewInstance(virDomainPtr handle)
{
  Nan::EscapableHandleScope scope;
  Local<Function> ctor = Nan::New<Function>(constructor);
  Local<Object> object = ctor->NewInstance();
...

由于我对这些V8问题的精通不够,也许有人可以告诉我要改变什么以及如何使其发挥作用。

0 个答案:

没有答案