nw.js: Missing symbols in node.lib
NWJS Version : 0.39.2 Operating System : Windows 10
node.lib
is missing the following symbols:
?IsCacheable@ExternalStringResourceBase@String@v8@@UEBA_NXZ (public: virtual bool __cdecl v8::String::ExternalStringResourceBase::IsCacheable(void)const )
?Lock@ExternalStringResourceBase@String@v8@@MEBAXXZ (protected: virtual void __cdecl v8::String::ExternalStringResourceBase::Lock(void)const )
?Unlock@ExternalStringResourceBase@String@v8@@MEBAXXZ (protected: virtual void __cdecl v8::String::ExternalStringResourceBase::Unlock(void)const )
These symbols exists in the 12.4.0 node-gyp
version of node.lib
>cd .node-gyp\12.4.0\x64
>dumpbin /EXPORTS node.lib | findstr v8::String::ExternalStringResourceBase::
??0ExternalStringResourceBase@String@v8@@IEAA@XZ (protected: __cdecl v8::String::ExternalStringResourceBase::ExternalStringResourceBase(void))
??1ExternalStringResourceBase@String@v8@@UEAA@XZ (public: virtual __cdecl v8::String::ExternalStringResourceBase::~ExternalStringResourceBase(void))
??_7ExternalStringResourceBase@String@v8@@6B@ (const v8::String::ExternalStringResourceBase::`vftable')
?Dispose@ExternalStringResourceBase@String@v8@@MEAAXXZ (protected: virtual void __cdecl v8::String::ExternalStringResourceBase::Dispose(void))
?IsCacheable@ExternalStringResourceBase@String@v8@@UEBA_NXZ (public: virtual bool __cdecl v8::String::ExternalStringResourceBase::IsCacheable(void)const )
?Lock@ExternalStringResourceBase@String@v8@@MEBAXXZ (protected: virtual void __cdecl v8::String::ExternalStringResourceBase::Lock(void)const )
?Unlock@ExternalStringResourceBase@String@v8@@MEBAXXZ (protected: virtual void __cdecl v8::String::ExternalStringResourceBase::Unlock(void)const )
>
But not in the 0.39.2 nw-gyp
version of node.lib
>cd .nw-gyp\0.39.2\x64
>dumpbin /EXPORTS node.lib | findstr v8::String::ExternalStringResourceBase::
>
An other way to see this fault and the consequences of it is to create a project that is dependent of node-lmdb
version 0.7.0 and the try to rebuild it with nw-gyp
set npm_config_arch=x64
set npm_config_build_from_source=true
set npm_config_node_gyp=c:\\Users\\xxxxxxxxx\\AppData\\Roaming\\npm\\node_modules\\nw-gyp\\bin\\nw-gyp.js
set npm_config_runtime=node-webkit
set npm_config_target=0.39.2
>npm rebuild --verbose --msvs_version=2015 node-lmdb
The build will fail with the following error:
(Link target) ->
misc.obj : error LNK2001: unresolved external symbol "public: virtual bool __cdecl v8::String::ExternalStringResourceBase::IsCacheable(void)const " (?IsCacheable@ ExternalStringResourceBase@String@v8@@UEBA_NXZ)
misc.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl v8::String::ExternalStringResourceBase::Lock(void)const " (?Lock@ExternalStr ingResourceBase@String@v8@@MEBAXXZ)
misc.obj : error LNK2001: unresolved external symbol "protected: virtual void __cdecl v8::String::ExternalStringResourceBase::Unlock(void)const " (?Unlock@Externa lStringResourceBase@String@v8@@MEBAXXZ)
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Comments: 23 (9 by maintainers)
Commits related to this issue
- Fix ia32 case: nwjs/nw.js#7104: using clang to build native modules — committed to nwjs/nw-gyp by rogerwang 5 years ago
I can confirm that modules with this issue can be built successfully with clang-cl.exe and lld-link.exe. Will push an update of nw-gyp soon.