Version: Since dec, 2017...
This wasn't an issue previously.
(Sorry for vagueness)
At the bottom is the result of a build of an addon.
node-x64\v10.1.0\include\node\node.h(637): warning C4251: 'node::CallbackScope::try_catch_': class 'v8::TryCatch' needs to have dll-interface to be us
ed by clients of class 'node::CallbackScope'
https://github.com/nodejs/node/blob/master/src/node.h#L663
Deleting NODE_EXTERN on that line of code fixes the warning.
(rather than modifying the V8 headers to have NODE_EXTERN on TryCatch)
Also #15570
#15570 (comment)
This is hidden by node-gyp which, by default, enables disable warning C4251 in windows.
cmake-js does not auto-disable this warning... so it shows up for those builds.
"H:\dev2\kcore\kcore\node_modules\sack.vfs\build\ALL_BUILD.vcxproj" (default target) (1) ->
"H:\dev2\kcore\kcore\node_modules\sack.vfs\build\sack_vfs.vcxproj" (default target) (3) ->
(ClCompile target) ->
C:\Users\Panther\.cmake-js\node-x64\v10.1.0\include\node\node.h(637): warning C4251: 'node::CallbackScope::try_catch_': class 'v8::TryCatch' needs to have dll-interface to be us
ed by clients of class 'node::CallbackScope' (compiling source file H:\dev2\kcore\kcore\node_modules\sack.vfs\src\com_interface.cc)C:\Users\Panther\.cmake-js\node-x64\v10.1.0\incl
ude\node\node.h(637): warning C4251: 'node::CallbackScope::try_catch_': class 'v8::TryCatch' needs to have dll-interface to be used by clients of class 'node::CallbackScope' (comp
iling source file H:\dev2\kcore\kcore\node_modules\sack.vfs\src\sql_module.cc) [H:\dev2\kcore\kcore\node_modules\sack.vfs\build\sack_vfs.vcxproj]
C:\Users\Panther\.cmake-js\node-x64\v10.1.0\include\node\node.h(637): warning C4251: 'node::CallbackScope::try_catch_': class 'v8::TryCatch' needs to have dll-interface to be us
ed by clients of class 'node::CallbackScope' (compiling source file H:\dev2\kcore\kcore\node_modules\sack.vfs\src\tls_interface.cc) [H:\dev2\kcore\kcore\node_modules\sack.vfs\buil
d\sack_vfs.vcxproj]
C:\Users\Panther\.cmake-js\node-x64\v10.1.0\include\node\node.h(637): warning C4251: 'node::CallbackScope::try_catch_': class 'v8::TryCatch' needs to have dll-interface to be us
ed by clients of class 'node::CallbackScope' (compiling source file H:\dev2\kcore\kcore\node_modules\sack.vfs\src\jsonParse.cc) [H:\dev2\kcore\kcore\node_modules\sack.vfs\build\sa
ck_vfs.vcxproj]
C:\Users\Panther\.cmake-js\node-x64\v10.1.0\include\node\node.h(637): warning C4251: 'node::CallbackScope::try_catch_': class 'v8::TryCatch' needs to have dll-interface to be us
ed by clients of class 'node::CallbackScope' (compiling source file H:\dev2\kcore\kcore\node_modules\sack.vfs\src\websocket_module.cc) [H:\dev2\kcore\kcore\node_modules\sack.vfs\b
uild\sack_vfs.vcxproj]
C:\Users\Panther\.cmake-js\node-x64\v10.1.0\include\node\node.h(637): warning C4251: 'node::CallbackScope::try_catch_': class 'v8::TryCatch' needs to have dll-interface to be us
ed by clients of class 'node::CallbackScope' (compiling source file H:\dev2\kcore\kcore\node_modules\sack.vfs\src\thread_module.cc)C:\Users\Panther\.cmake-js\node-x64\v10.1.0\incl
ude\node\node.h(637): warning C4251: 'node::CallbackScope::try_catch_': class 'v8::TryCatch' needs to have dll-interface to be used by clients of class 'node::CallbackScope' (comp
iling source file H:\dev2\kcore\kcore\node_modules\sack.vfs\src\vfs_module.cc) [H:\dev2\kcore\kcore\node_modules\sack.vfs\build\sack_vfs.vcxproj]
C:\Users\Panther\.cmake-js\node-x64\v10.1.0\include\node\node.h(637): warning C4251: 'node::CallbackScope::try_catch_': class 'v8::TryCatch' needs to have dll-interface to be us
ed by clients of class 'node::CallbackScope' (compiling source file H:\dev2\kcore\kcore\node_modules\sack.vfs\src\srg_module.cc) [H:\dev2\kcore\kcore\node_modules\sack.vfs\build\s
ack_vfs.vcxproj]
C:\Users\Panther\.cmake-js\node-x64\v10.1.0\include\node\node.h(637): warning C4251: 'node::CallbackScope::try_catch_': class 'v8::TryCatch' needs to have dll-interface to be us
ed by clients of class 'node::CallbackScope' (compiling source file H:\dev2\kcore\kcore\node_modules\sack.vfs\src\network_module.cc) [H:\dev2\kcore\kcore\node_modules\sack.vfs\bui
ld\sack_vfs.vcxproj]
C:\Users\Panther\.cmake-js\node-x64\v10.1.0\include\node\node.h(637): warning C4251: 'node::CallbackScope::try_catch_': class 'v8::TryCatch' needs to have dll-interface to be us
ed by clients of class 'node::CallbackScope' (compiling source file H:\dev2\kcore\kcore\node_modules\sack.vfs\src\task_module.cc) [H:\dev2\kcore\kcore\node_modules\sack.vfs\build\
sack_vfs.vcxproj]
C:\Users\Panther\.cmake-js\node-x64\v10.1.0\include\node\node.h(637): warning C4251: 'node::CallbackScope::try_catch_': class 'v8::TryCatch' needs to have dll-interface to be us
ed by clients of class 'node::CallbackScope' (compiling source file H:\dev2\kcore\kcore\node_modules\sack.vfs\src\reg_access.cc) [H:\dev2\kcore\kcore\node_modules\sack.vfs\build\s
ack_vfs.vcxproj]
C:\Users\Panther\.cmake-js\node-x64\v10.1.0\include\node\node.h(637): warning C4251: 'node::CallbackScope::try_catch_': class 'v8::TryCatch' needs to have dll-interface to be us
ed by clients of class 'node::CallbackScope' (compiling source file H:\dev2\kcore\kcore\node_modules\sack.vfs\src\config_module.cc) [H:\dev2\kcore\kcore\node_modules\sack.vfs\buil
d\sack_vfs.vcxproj]
H:\dev2\kcore\kcore\node_modules\sack.vfs\src\sack\sack.cc(66053): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data [H:\dev2\kcore\kcore\node_
modules\sack.vfs\build\sack_vfs.vcxproj]
Version: Since dec, 2017...
This wasn't an issue previously.
(Sorry for vagueness)
At the bottom is the result of a build of an addon.
https://github.com/nodejs/node/blob/master/src/node.h#L663
Deleting NODE_EXTERN on that line of code fixes the warning.
(rather than modifying the V8 headers to have NODE_EXTERN on TryCatch)
Also #15570
#15570 (comment)
This is hidden by node-gyp which, by default, enables disable warning C4251 in windows.
cmake-js does not auto-disable this warning... so it shows up for those builds.