arm64上的node-gyp构建错误-错误:名称空间'v8'中的'WeakCallbackData'未命名模板类型

问题描述 投票:0回答:1

我正在使用swig为cpp构建一个js包装器。我在fedora上进行了尝试,并且运行良好(fedora30。gcc版本9.1.1)。

但是当我在arm64操作系统(gcc-7.3)上构建相同的代码时。它给了我以下错误。是否因为gcc版本不同?还是还有其他原因?请帮忙 !

提供错误的一小部分,因为它太大了。

CXX(target) Release/obj.target/facerec/facerec_wrap.o
../facerec_wrap.cxx:966:27: error: 'WeakCallbackData' in namespace 'v8' does not name a template type
   void (*dtor) (const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data);
                           ^~~~~~~~~~~~~~~~
../facerec_wrap.cxx:966:43: error: expected ',' or '...' before '<' token
   void (*dtor) (const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data);
                                           ^
../facerec_wrap.cxx:1014:53: error: 'WeakCallbackData' in namespace 'v8' does not name a template type
 SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data) {
                                                     ^~~~~~~~~~~~~~~~
../facerec_wrap.cxx:1014:69: error: expected ',' or '...' before '<' token
 SWIGRUNTIME void SWIGV8_Proxy_DefaultDtor(const v8::WeakCallbackData<v8::Object, SWIGV8_Proxy> &data) {
                                                                     ^
../facerec_wrap.cxx: In function 'void SWIGV8_Proxy_DefaultDtor(int)':
../facerec_wrap.cxx:1015:25: error: 'data' was not declared in this scope
   SWIGV8_Proxy *proxy = data.GetParameter();
                         ^~~~
../facerec_wrap.cxx: In function 'void SWIGV8_SetPrivateData(v8::Handle<v8::Object>, void*, swig_type_info*, int)':
../facerec_wrap.cxx:1086:78: error: no matching function for call to 'v8::Persistent<v8::Object>::SetWeak(SWIGV8_Proxy*&, void (*&)(int))'
     cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor);
                                                                              ^
In file included from /home/shunya/.cache/node-gyp/8.4.0/include/node/node.h:63:0,
                 from ../facerec_wrap.cxx:171:
/home/shunya/.cache/node-gyp/8.4.0/include/node/v8.h:544:18: note: candidate: template<class P> void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = P; T = v8::Object]
   V8_INLINE void SetWeak(P* parameter,
                  ^~~~~~~
/home/shunya/.cache/node-gyp/8.4.0/include/node/v8.h:544:18: note:   template argument deduction/substitution failed:
../facerec_wrap.cxx:1086:78: note:   candidate expects 3 arguments, 2 provided
     cdata->handle.SetWeak(cdata, ((SWIGV8_ClientData*)info->clientdata)->dtor);

javascript node.js gcc swig
1个回答
0
投票

这是因为您要针对其他NodeJS版本进行编译。每次更新都会稍微更改一下API,因此您必须将Node升级或降级到可以使用的版本,或者等到您使用的版本添加对可用NodeJS版本的支持。

© www.soinside.com 2019 - 2024. All rights reserved.