mmdevries / eiows

Other
78 stars 4 forks source link

Build fails on Windows 10 #3

Closed apydo closed 1 year ago

apydo commented 4 years ago

The build fails on Windows 10 Pro 64-bit, Node 14.4.0, and there is no pre-built binary provided:

D:\eiows>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "C:\Users\apydo\AppData\Roaming\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild ) 
Les projets sont g‚n‚r‚s individuellement dans cette solution. Pour activer la g‚n‚ration en parallŠle, ajoutez le commutateur "/m".
  addon.cpp
  Extensions.cpp
  Group.cpp
  Networking.cpp
  Hub.cpp
  Node.cpp
  WebSocket.cpp
  Socket.cpp
  win_delay_load_hook.cc
d:\eiows\uwebsockets\src\libuv.h(73): error C2440: 'static_cast'ÿ: impossible de convertir de 'uv_poll_t *const ' en 'uv_handle_t *' (compilation du fichier source ..\nodejs\src\addon.cpp) [D:\eiows\build\eiows.vcxproj]
  d:\eiows\uwebsockets\src\libuv.h(73): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction (compilation du fichier source ..\nodejs\src\addon.cpp)
d:\eiows\uwebsockets\src\libuv.h(73): error C2440: 'static_cast'ÿ: impossible de convertir de 'uv_poll_t *const ' en 'uv_handle_t *' (compilation du fichier source ..\uWebSockets\src\Networking.cpp) [D:\eiows\build\eiows.vcxproj]
  d:\eiows\uwebsockets\src\libuv.h(73): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction (compilation du fichier source ..\uWebSockets\src\Networking.cpp)
d:\eiows\uwebsockets\src\libuv.h(73): error C2440: 'static_cast'ÿ: impossible de convertir de 'uv_os_sock_t *' en 'uv_os_fd_t *' (compilation du fichier source ..\nodejs\src\addon.cpp) [D:\eiows\build\eiows.vcxproj]
  d:\eiows\uwebsockets\src\libuv.h(73): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction (compilation du fichier source ..\nodejs\src\addon.cpp)
d:\eiows\uwebsockets\src\libuv.h(73): error C2440: 'static_cast'ÿ: impossible de convertir de 'uv_os_sock_t *' en 'uv_os_fd_t *' (compilation du fichier source ..\uWebSockets\src\Networking.cpp) [D:\eiows\build\eiows.vcxproj]
  d:\eiows\uwebsockets\src\libuv.h(73): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction (compilation du fichier source ..\uWebSockets\src\Networking.cpp)
d:\eiows\uwebsockets\src\libuv.h(73): error C2660: 'uv_fileno'ÿ: la fonction ne prend pas 1 arguments (compilation du fichier source ..\nodejs\src\addon.cpp) [D:\eiows\build\eiows.vcxproj]
  c:\users\apydo\appdata\local\node-gyp\cache\14.4.0\include\node\uv.h(471): note: voir la d‚claration de 'uv_fileno' (compilation du fichier source ..\nodejs\src\addon.cpp)
d:\eiows\uwebsockets\src\libuv.h(73): error C2660: 'uv_fileno'ÿ: la fonction ne prend pas 1 arguments (compilation du fichier source ..\uWebSockets\src\Networking.cpp) [D:\eiows\build\eiows.vcxproj]
  c:\users\apydo\appdata\local\node-gyp\cache\14.4.0\include\node\uv.h(471): note: voir la d‚claration de 'uv_fileno' (compilation du fichier source ..\uWebSockets\src\Networking.cpp)
d:\eiows\uwebsockets\src\libuv.h(73): error C2440: 'static_cast'ÿ: impossible de convertir de 'uv_poll_t *const ' en 'uv_handle_t *' (compilation du fichier source ..\uWebSockets\src\Node.cpp) [D:\eiows\build\eiows.vcxproj]
  d:\eiows\uwebsockets\src\libuv.h(73): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction (compilation du fichier source ..\uWebSockets\src\Node.cpp)
d:\eiows\uwebsockets\src\libuv.h(73): error C2440: 'static_cast'ÿ: impossible de convertir de 'uv_os_sock_t *' en 'uv_os_fd_t *' (compilation du fichier source ..\uWebSockets\src\Node.cpp) [D:\eiows\build\eiows.vcxproj]
  d:\eiows\uwebsockets\src\libuv.h(73): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction (compilation du fichier source ..\uWebSockets\src\Node.cpp)
d:\eiows\uwebsockets\src\libuv.h(73): error C2660: 'uv_fileno'ÿ: la fonction ne prend pas 1 arguments (compilation du fichier source ..\uWebSockets\src\Node.cpp) [D:\eiows\build\eiows.vcxproj]
  c:\users\apydo\appdata\local\node-gyp\cache\14.4.0\include\node\uv.h(471): note: voir la d‚claration de 'uv_fileno' (compilation du fichier source ..\uWebSockets\src\Node.cpp)
d:\eiows\uwebsockets\src\libuv.h(73): error C2440: 'static_cast'ÿ: impossible de convertir de 'uv_poll_t *const ' en 'uv_handle_t *' (compilation du fichier source ..\uWebSockets\src\Hub.cpp) [D:\eiows\build\eiows.vcxproj]
  d:\eiows\uwebsockets\src\libuv.h(73): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction (compilation du fichier source ..\uWebSockets\src\Hub.cpp)
d:\eiows\uwebsockets\src\libuv.h(73): error C2440: 'static_cast'ÿ: impossible de convertir de 'uv_os_sock_t *' en 'uv_os_fd_t *' (compilation du fichier source ..\uWebSockets\src\Hub.cpp) [D:\eiows\build\eiows.vcxproj]
  d:\eiows\uwebsockets\src\libuv.h(73): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction (compilation du fichier source ..\uWebSockets\src\Hub.cpp)
d:\eiows\uwebsockets\src\libuv.h(73): error C2660: 'uv_fileno'ÿ: la fonction ne prend pas 1 arguments (compilation du fichier source ..\uWebSockets\src\Hub.cpp) [D:\eiows\build\eiows.vcxproj]
  c:\users\apydo\appdata\local\node-gyp\cache\14.4.0\include\node\uv.h(471): note: voir la d‚claration de 'uv_fileno' (compilation du fichier source ..\uWebSockets\src\Hub.cpp)
d:\eiows\uwebsockets\src\libuv.h(73): error C2440: 'static_cast'ÿ: impossible de convertir de 'uv_poll_t *const ' en 'uv_handle_t *' (compilation du fichier source ..\uWebSockets\src\Group.cpp) [D:\eiows\build\eiows.vcxproj]
  d:\eiows\uwebsockets\src\libuv.h(73): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction (compilation du fichier source ..\uWebSockets\src\Group.cpp)
d:\eiows\uwebsockets\src\libuv.h(73): error C2440: 'static_cast'ÿ: impossible de convertir de 'uv_os_sock_t *' en 'uv_os_fd_t *' (compilation du fichier source ..\uWebSockets\src\Group.cpp) [D:\eiows\build\eiows.vcxproj]
  d:\eiows\uwebsockets\src\libuv.h(73): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction (compilation du fichier source ..\uWebSockets\src\Group.cpp)
d:\eiows\uwebsockets\src\libuv.h(73): error C2660: 'uv_fileno'ÿ: la fonction ne prend pas 1 arguments (compilation du fichier source ..\uWebSockets\src\Group.cpp) [D:\eiows\build\eiows.vcxproj]
  c:\users\apydo\appdata\local\node-gyp\cache\14.4.0\include\node\uv.h(471): note: voir la d‚claration de 'uv_fileno' (compilation du fichier source ..\uWebSockets\src\Group.cpp)
d:\eiows\uwebsockets\src\libuv.h(73): error C2440: 'static_cast'ÿ: impossible de convertir de 'uv_poll_t *const ' en 'uv_handle_t *' (compilation du fichier source ..\uWebSockets\src\WebSocket.cpp) [D:\eiows\build\eiows.vcxproj]
  d:\eiows\uwebsockets\src\libuv.h(73): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction (compilation du fichier source ..\uWebSockets\src\WebSocket.cpp)
d:\eiows\uwebsockets\src\libuv.h(73): error C2440: 'static_cast'ÿ: impossible de convertir de 'uv_poll_t *const ' en 'uv_handle_t *' (compilation du fichier source ..\uWebSockets\src\Socket.cpp) [D:\eiows\build\eiows.vcxproj]
  d:\eiows\uwebsockets\src\libuv.h(73): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction (compilation du fichier source ..\uWebSockets\src\Socket.cpp)
d:\eiows\uwebsockets\src\libuv.h(73): error C2440: 'static_cast'ÿ: impossible de convertir de 'uv_os_sock_t *' en 'uv_os_fd_t *' (compilation du fichier source ..\uWebSockets\src\WebSocket.cpp) [D:\eiows\build\eiows.vcxproj]
  d:\eiows\uwebsockets\src\libuv.h(73): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction (compilation du fichier source ..\uWebSockets\src\WebSocket.cpp)
d:\eiows\uwebsockets\src\libuv.h(73): error C2440: 'static_cast'ÿ: impossible de convertir de 'uv_os_sock_t *' en 'uv_os_fd_t *' (compilation du fichier source ..\uWebSockets\src\Socket.cpp) [D:\eiows\build\eiows.vcxproj]
  d:\eiows\uwebsockets\src\libuv.h(73): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction (compilation du fichier source ..\uWebSockets\src\Socket.cpp)
d:\eiows\uwebsockets\src\libuv.h(73): error C2660: 'uv_fileno'ÿ: la fonction ne prend pas 1 arguments (compilation du fichier source ..\uWebSockets\src\WebSocket.cpp) [D:\eiows\build\eiows.vcxproj]
  c:\users\apydo\appdata\local\node-gyp\cache\14.4.0\include\node\uv.h(471): note: voir la d‚claration de 'uv_fileno' (compilation du fichier source ..\uWebSockets\src\WebSocket.cpp)
d:\eiows\uwebsockets\src\libuv.h(73): error C2660: 'uv_fileno'ÿ: la fonction ne prend pas 1 arguments (compilation du fichier source ..\uWebSockets\src\Socket.cpp) [D:\eiows\build\eiows.vcxproj]
  c:\users\apydo\appdata\local\node-gyp\cache\14.4.0\include\node\uv.h(471): note: voir la d‚claration de 'uv_fileno' (compilation du fichier source ..\uWebSockets\src\Socket.cpp)
d:\eiows\nodejs\src\addon.h(57): warning C4996: 'node::MakeCallback': a ‚t‚ d‚clar‚ d‚conseill‚ (compilation du fichier source ..\nodejs\src\addon.cpp) [D:\eiows\build\eiows.vcxproj]
  c:\users\apydo\appdata\local\node-gyp\cache\14.4.0\include\node\node.h(188): note: voir la d‚claration de 'node::MakeCallback' (compilation du fichier source ..\nodejs\src\addon.cpp)
d:\eiows\nodejs\src\addon.h(82): warning C4996: 'v8::ArrayBuffer::GetContents': Use GetBackingStore. See http://crbug.com/v8/9908. (compilation du fichier source ..\nodejs\src\addon.cpp) [D:\eiows\build\eiows.vcxproj]
  c:\users\apydo\appdata\local\node-gyp\cache\14.4.0\include\node\v8.h(5203): note: voir la d‚claration de 'v8::ArrayBuffer::GetContents' (compilation du fichier source ..\nodejs\src\addon.cpp)
d:\eiows\nodejs\src\addon.h(87): warning C4996: 'v8::ArrayBuffer::GetContents': Use GetBackingStore. See http://crbug.com/v8/9908. (compilation du fichier source ..\nodejs\src\addon.cpp) [D:\eiows\build\eiows.vcxproj]
  c:\users\apydo\appdata\local\node-gyp\cache\14.4.0\include\node\v8.h(5203): note: voir la d‚claration de 'v8::ArrayBuffer::GetContents' (compilation du fichier source ..\nodejs\src\addon.cpp)
d:\eiows\nodejs\src\addon.h(247): error C3861: 'dup'ÿ: identificateur introuvable (compilation du fichier source ..\nodejs\src\addon.cpp) [D:\eiows\build\eiows.vcxproj]
gyp ERR! build error 
gyp ERR! stack Error: `C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onExit (C:\Users\apydo\AppData\Roaming\npm\node_modules\node-gyp\lib\build.js:194:23)
gyp ERR! stack     at ChildProcess.emit (events.js:315:20)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:276:12)
gyp ERR! System Windows_NT 10.0.19041
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\apydo\\AppData\\Roaming\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd D:\eiows
gyp ERR! node -v v14.4.0
gyp ERR! node-gyp -v v7.0.0
gyp ERR! not ok 

Sorry, the output is in french (current locale), however useful error codes are well known (C2440, C2660, C3861): https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/compiler-error-c2440?view=vs-2017 https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-2/compiler-error-c2660?view=vs-2017 https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-2/compiler-error-c3861?view=vs-2017

Windows version of this module is very useful to our developpers during the tests/validations on their personal computers while the main servers are running Linux.

mmdevries commented 4 years ago

@apydo In my enthusiasm to cleanup/improve the code I destroyed the windows build. In the new version of eiows (3.1.4) I tried to restore this. Thank you for your feedback. Can you let me know if this new version solves your issue?

apydo commented 4 years ago

Hello @mmdevries, thank you for a quick answer.

I tried it today and instead of usual 101 http code (upgrade to websocket) I saw 502 error code. However, it seems to compile fine even if there is still some warnings :

D:\eiows>if not defined npm_config_node_gyp (node "C:\Users\apydo\AppData\Roaming\npm\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "C:\Users\apydo\AppData\Roaming\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild ) 
Les projets sont g‚n‚r‚s individuellement dans cette solution. Pour activer la g‚n‚ration en parallŠle, ajoutez le commutateur "/m".
  addon.cpp
  Extensions.cpp
  Group.cpp
  Networking.cpp
  Hub.cpp
  Node.cpp
  WebSocket.cpp
  Socket.cpp
  win_delay_load_hook.cc
d:\eiows\nodejs\src\addon.h(86): warning C4996: 'node::MakeCallback': a ‚t‚ d‚clar‚ d‚conseill‚ (compilation du fichier source ..\nodejs\src\addon.cpp) [D:\eiows\build\eiows.vcxproj]
  c:\users\apydo\appdata\local\node-gyp\cache\14.4.0\include\node\node.h(188): note: voir la d‚claration de 'node::MakeCallback' (compilation du fichier source ..\nodejs\src\addon.cpp)
d:\eiows\nodejs\src\addon.h(111): warning C4996: 'v8::ArrayBuffer::GetContents': Use GetBackingStore. See http://crbug.com/v8/9908. (compilation du fichier source ..\nodejs\src\addon.cpp) [D:\eiows\build\eiows.vcxproj]
  c:\users\apydo\appdata\local\node-gyp\cache\14.4.0\include\node\v8.h(5203): note: voir la d‚claration de 'v8::ArrayBuffer::GetContents' (compilation du fichier source ..\nodejs\src\addon.cpp)
d:\eiows\nodejs\src\addon.h(116): warning C4996: 'v8::ArrayBuffer::GetContents': Use GetBackingStore. See http://crbug.com/v8/9908. (compilation du fichier source ..\nodejs\src\addon.cpp) [D:\eiows\build\eiows.vcxproj]
  c:\users\apydo\appdata\local\node-gyp\cache\14.4.0\include\node\v8.h(5203): note: voir la d‚claration de 'v8::ArrayBuffer::GetContents' (compilation du fichier source ..\nodejs\src\addon.cpp)
     Création de la bibliothèque D:\eiows\build\Release\eiows.lib et de l'objet D:\eiows\build\Release\eiows.exp
  Génération de code en cours
  All 915 functions were compiled because no usable IPDB/IOBJ from previous compilation was found.
  Fin de la génération du code
  eiows.vcxproj -> D:\eiows\build\Release\\eiows.node
  move_lib
          1 fichier(s) copi‚(s).

I also tried to downgrade to node 10.21.0 and compare to uws module. eiows compiles also but there is still 502 error on websocket connection. uws works fine but please note that uws 10.148.1 is provided with precompiled windows binary so there is no compilation during npm install. Build log in node 10 is a little bit different so I copy it here, I hope that it helps :

D:\eiows>if not defined npm_config_node_gyp (node "C:\Users\apydo\AppData\Roaming\npm\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild )  else (node "C:\Users\apydo\AppData\Roaming\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild ) 
Les projets sont g‚n‚r‚s individuellement dans cette solution. Pour activer la g‚n‚ration en parallŠle, ajoutez le commutateur "/m".
  addon.cpp
  Extensions.cpp
  Group.cpp
  Networking.cpp
  Hub.cpp
  Node.cpp
  WebSocket.cpp
  Socket.cpp
  win_delay_load_hook.cc
d:\eiows\nodejs\src\addon.h(86): warning C4996: 'node::MakeCallback': a ‚t‚ d‚clar‚ d‚conseill‚ (compilation du fichier source ..\nodejs\src\addon.cpp) [D:\eiows\build\eiows.vcxproj]
  c:\users\apydo\appdata\local\node-gyp\cache\10.21.0\include\node\node.h(176): note: voir la d‚claration de 'node::MakeCallback' (compilation du fichier source ..\nodejs\src\addon.cpp)
     Création de la bibliothèque D:\eiows\build\Release\eiows.lib et de l'objet D:\eiows\build\Release\eiows.exp
  Génération de code en cours
  All 914 functions were compiled because no usable IPDB/IOBJ from previous compilation was found.
  Fin de la génération du code
  eiows.vcxproj -> D:\eiows\build\Release\\eiows.node
  move_lib
          1 fichier(s) copi‚(s).

My current conclusion is that the error is not a configuration problem on my side as I'm just changing the wsEngine option in serverOptions of socket.io ("serverOptions" : { "wsEngine": "eiows|uws|ws"}) and other websocket engines works fine. But my main concern is that I can't see any other error messages in node console and I don't know how to help you at the moment. The only error I can see is 502 in browser network debug on websocket connection.

apydo commented 4 years ago

By the way, the websocket connections I'm currently testing are NOT secure (ws), there is non TLS/SSL transport. The calls are similar to : ws://localhost/nodejs/dev/socket.io/?event=0&session=0&role=global&locale=fr&ppt=&bCode=&bToken=&EIO=3&transport=websocket&sid=kG5Tq6C20K7Elj9UAAAA

wujohns commented 3 years ago

I build success, But it can't work correctly in win10(mac or linux is ok)

dzcpy commented 2 years ago

Any updates?

mmdevries commented 1 year ago

No, support for windows will be dropped.