Closed JonahWeinbaum closed 1 week ago
I am also encountering this issue, after some investigation, the linker errors stem from the linkage of the gns lib not including two files generated by invoking protoc :
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.41.34120\\bin\\HostX64\\x64\\link.exe" -lib -nologo -machine:x64 /opt:ref /opt:icf -out:build_7c0aa346\windows\x64\release\gamenetworkingsockets.lib build_7c0aa346\.objs\gns\windows\x64\release\src\common\crypto_openssl.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\common\crypto_25519_openssl.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\common\opensslwrapper.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\common\crypto.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\common\crypto_textencode.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\common\keypair.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\common\steamid.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\vstdlib\strtools.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\tier0\dbg.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\tier0\platformtime.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\tier1\netadr.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\tier1\utlbuffer.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\tier1\utlmemory.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\steamnetworkingsockets\steamnetworkingsockets_certs.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\steamnetworkingsockets\steamnetworkingsockets_thinker.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\steamnetworkingsockets\steamnetworkingsockets_certstore.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\steamnetworkingsockets\clientlib\steamnetworkingsockets_connections.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\steamnetworkingsockets\clientlib\steamnetworkingsockets_flat.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\steamnetworkingsockets\clientlib\steamnetworkingsockets_lowlevel.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\steamnetworkingsockets\steamnetworkingsockets_shared.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\steamnetworkingsockets\steamnetworkingsockets_stats.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\steamnetworkingsockets\clientlib\steamnetworkingsockets_snp.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\steamnetworkingsockets\clientlib\steamnetworkingsockets_udp.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\steamnetworkingsockets\clientlib\csteamnetworkingmessages.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\steamnetworkingsockets\clientlib\csteamnetworkingsockets.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\steamnetworkingsockets\clientlib\steamnetworkingsockets_p2p.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\steamnetworkingsockets\clientlib\steamnetworkingsockets_stun.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\steamnetworkingsockets\clientlib\steamnetworkingsockets_p2p_ice.cpp.obj build_7c0aa346\.objs\gns\windows\x64\release\src\tier1\ipv6text.c.obj build_7c0aa346\.objs\gns\windows\x64\release\gens\rules\protobuf\src\common\steamnetworkingsockets_messages_certs.pb.cc.obj
As can be seen above only steamnetworkingsockets_messages_certs.pb.cc.obj
is included in the link step.
But 3 files should be included :
[ 10%]: compiling.proto.c++ src\common\steamnetworkingsockets_messages_certs.proto
C:\Users\Work\AppData\Local\.xmake\packages\p\protobuf-cpp\3.19.4\db2c6fa863004f1281d50ffbe57c07ab\bin\protoc src\common\steamnetworkingsockets_messages_certs.proto -Isrc\common --cpp_out=build_7c0aa346\.gens\gns\windows\x64\release\rules\protobuf\src\common
[ 10%]: compiling.proto.c++ src\common\steamnetworkingsockets_messages.proto
C:\Users\Work\AppData\Local\.xmake\packages\p\protobuf-cpp\3.19.4\db2c6fa863004f1281d50ffbe57c07ab\bin\protoc src\common\steamnetworkingsockets_messages.proto -Isrc\common --cpp_out=build_7c0aa346\.gens\gns\windows\x64\release\rules\protobuf\src\common
[ 10%]: compiling.proto.c++ src\common\steamnetworkingsockets_messages_udp.proto
C:\Users\Work\AppData\Local\.xmake\packages\p\protobuf-cpp\3.19.4\db2c6fa863004f1281d50ffbe57c07ab\bin\protoc src\common\steamnetworkingsockets_messages_udp.proto -Isrc\common --cpp_out=build_7c0aa346\.gens\gns\windows\x64\release\rules\protobuf\src\common
Which are correctly built with cl.exe:
[ 89%]: compiling.proto.release build_7c0aa346\.gens\gns\windows\x64\release\rules\protobuf\src\common\steamnetworkingsockets_messages_certs.pb.cc
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\bin\HostX64\x64\cl.exe -c -nologo -O2 -arch:SSE2 -std:c++17 -MT -Iinclude -Isrc -Isrc\common -Isrc\tier0 -Isrc\tier1 -Isrc\vstdlib -Isrc\steamnetworkingsockets -Isrc\steamnetworkingsockets\clientlib -Isrc\public -DWIN32 -D_WINDOWS -DSTEAMNETWORKINGSOCKETS_STATIC_LINK -DOPENSSL_USE_STATIC_LIBS -DSTEAMNETWORKINGSOCKETS_CRYPTO_25519_OPENSSL -DSTEAMNETWORKINGSOCKETS_CRYPTO_VALVEOPENSSL -DOPENSSL_HAS_25519_RAW -DVALVE_CRYPTO_ENABLE_25519 -DGOOGLE_PROTOBUF_NO_RTTI -DVALVE_CRYPTO_25519_OPENSSL -DCRYPTO_DISABLE_ENCRYPT_WITH_PASSWORD -DENABLE_OPENSSLCONNECTION /EHsc -external:W0 -external:IC:\Users\Work\AppData\Local\.xmake\packages\p\protobuf-cpp\3.19.4\db2c6fa863004f1281d50ffbe57c07ab\include -external:W0 -external:IC:\Users\Work\AppData\Local\.xmake\packages\o\openssl\1.1.1-w\61d86fc2f8cc4e60a5bef5bc478c3a92\include -external:W0 -external:IC:\Users\Work\AppData\Local\.xmake\packages\a\abseil\20240722.0\2fb24eff77a9413781385fd7616d4ab4\include -DNDEBUG -Ibuild_7c0aa346\.gens\gns\windows\x64\release\rules\protobuf\src\common -Fobuild_7c0aa346\.objs\gns\windows\x64\release\gens\rules\protobuf\src\common\steamnetworkingsockets_messages_certs.pb.cc.obj build_7c0aa346\.gens\gns\windows\x64\release\rules\protobuf\src\common\steamnetworkingsockets_messages_certs.pb.cc
steamnetworkingsockets_messages_certs.pb.cc
checking for flags (-arch:SSE2) ... ok
> cl.exe "-arch:SSE2" "-nologo"
[ 92%]: compiling.proto.release build_7c0aa346\.gens\gns\windows\x64\release\rules\protobuf\src\common\steamnetworkingsockets_messages.pb.cc
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\bin\HostX64\x64\cl.exe -c -nologo -O2 -arch:SSE2 -std:c++17 -MT -Iinclude -Isrc -Isrc\common -Isrc\tier0 -Isrc\tier1 -Isrc\vstdlib -Isrc\steamnetworkingsockets -Isrc\steamnetworkingsockets\clientlib -Isrc\public -DWIN32 -D_WINDOWS -DSTEAMNETWORKINGSOCKETS_STATIC_LINK -DOPENSSL_USE_STATIC_LIBS -DSTEAMNETWORKINGSOCKETS_CRYPTO_25519_OPENSSL -DSTEAMNETWORKINGSOCKETS_CRYPTO_VALVEOPENSSL -DOPENSSL_HAS_25519_RAW -DVALVE_CRYPTO_ENABLE_25519 -DGOOGLE_PROTOBUF_NO_RTTI -DVALVE_CRYPTO_25519_OPENSSL -DCRYPTO_DISABLE_ENCRYPT_WITH_PASSWORD -DENABLE_OPENSSLCONNECTION /EHsc -external:W0 -external:IC:\Users\Work\AppData\Local\.xmake\packages\p\protobuf-cpp\3.19.4\db2c6fa863004f1281d50ffbe57c07ab\include -external:W0 -external:IC:\Users\Work\AppData\Local\.xmake\packages\o\openssl\1.1.1-w\61d86fc2f8cc4e60a5bef5bc478c3a92\include -external:W0 -external:IC:\Users\Work\AppData\Local\.xmake\packages\a\abseil\20240722.0\2fb24eff77a9413781385fd7616d4ab4\include -DNDEBUG -Ibuild_7c0aa346\.gens\gns\windows\x64\release\rules\protobuf\src\common -Fobuild_7c0aa346\.objs\gns\windows\x64\release\gens\rules\protobuf\src\common\steamnetworkingsockets_messages.pb.cc.obj build_7c0aa346\.gens\gns\windows\x64\release\rules\protobuf\src\common\steamnetworkingsockets_messages.pb.cc
checking for flags (-std:c17) ... ok
> cl.exe "-std:c17" "-nologo"
steamnetworkingsockets_messages.pb.cc
[ 94%]: compiling.proto.release build_7c0aa346\.gens\gns\windows\x64\release\rules\protobuf\src\common\steamnetworkingsockets_messages_udp.pb.cc
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.41.34120\bin\HostX64\x64\cl.exe -c -nologo -O2 -arch:SSE2 -std:c++17 -MT -Iinclude -Isrc -Isrc\common -Isrc\tier0 -Isrc\tier1 -Isrc\vstdlib -Isrc\steamnetworkingsockets -Isrc\steamnetworkingsockets\clientlib -Isrc\public -DWIN32 -D_WINDOWS -DSTEAMNETWORKINGSOCKETS_STATIC_LINK -DOPENSSL_USE_STATIC_LIBS -DSTEAMNETWORKINGSOCKETS_CRYPTO_25519_OPENSSL -DSTEAMNETWORKINGSOCKETS_CRYPTO_VALVEOPENSSL -DOPENSSL_HAS_25519_RAW -DVALVE_CRYPTO_ENABLE_25519 -DGOOGLE_PROTOBUF_NO_RTTI -DVALVE_CRYPTO_25519_OPENSSL -DCRYPTO_DISABLE_ENCRYPT_WITH_PASSWORD -DENABLE_OPENSSLCONNECTION /EHsc -external:W0 -external:IC:\Users\Work\AppData\Local\.xmake\packages\p\protobuf-cpp\3.19.4\db2c6fa863004f1281d50ffbe57c07ab\include -external:W0 -external:IC:\Users\Work\AppData\Local\.xmake\packages\o\openssl\1.1.1-w\61d86fc2f8cc4e60a5bef5bc478c3a92\include -external:W0 -external:IC:\Users\Work\AppData\Local\.xmake\packages\a\abseil\20240722.0\2fb24eff77a9413781385fd7616d4ab4\include -DNDEBUG -Ibuild_7c0aa346\.gens\gns\windows\x64\release\rules\protobuf\src\common -Fobuild_7c0aa346\.objs\gns\windows\x64\release\gens\rules\protobuf\src\common\steamnetworkingsockets_messages_udp.pb.cc.obj build_7c0aa346\.gens\gns\windows\x64\release\rules\protobuf\src\common\steamnetworkingsockets_messages_udp.pb.cc
steamnetworkingsockets_messages_udp.pb.cc
The .obj files are present in the output folder, so they are built, just not included in the link step.
please update xmake to dev and try it again.
xmake update -s dev
> checking for c++ snippet(has_cxxfuncs)
=> install gamenetworkingsockets v1.4.1 .. ok
Can confirm this fixed it! Thanks :)
Xmake Version
2.9.4
Operating System Version and Architecture
Windows 10.0.19045 Build 19045
Describe Bug
When attempting to install gamenetworkingsockets through xrepo. Aftering installing necessary requistes (protobuf) succesfully, the package still fails to succesfully link.
Expected Behavior
We expect a correct install and compilation of the package.
Project Configuration
Additional Information and Error Logs