Giter Site home page Giter Site logo

valvesoftware / gamenetworkingsockets Goto Github PK

View Code? Open in Web Editor NEW
7.8K 292.0 589.0 15.21 MB

Reliable & unreliable messages over UDP. Robust message fragmentation & reassembly. P2P networking / NAT traversal. Encryption.

License: BSD 3-Clause "New" or "Revised" License

C++ 94.16% C 2.66% CMake 2.50% Shell 0.08% Python 0.60%
reliable-messages networking game-development realtime-messaging peer-to-peer

gamenetworkingsockets's People

Contributors

aiusepsi avatar bobsayshilol avatar claushellsing avatar csjune avatar helloer avatar hussein-aitlahcen avatar janisozaur avatar jeffhill avatar leventsevgili avatar lorry-lee avatar max619 avatar maximegmd avatar msinilo avatar natweiss avatar nielsad avatar nxrighthere avatar osen avatar past-due avatar pkubaj avatar plan-do-break-fix avatar poliwrath avatar samvanheer avatar seriouslynottom avatar silentbaws avatar slouken avatar superusercode avatar tycho avatar yamashi avatar zcube avatar zpostfacto avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gamenetworkingsockets's Issues

Reason for the use of inconsistent Hungarian notation and lack of namespaces + Style Guidelines?

Reading the source I kept running into strange prefixes and not really thinking why they were there, until I found this file, and I realized this project used Hungarian notation.

Inconsistencies arise in the casing (in that file, some of the Hungarian cases don't match, I don't know if this is a mistake, or deliberate), and the lack of use for classes, and the lack of consistency for notation, some preferring Germanic prefixes and others the English prefixes for the same type.

Its also distracting and confusing (what does the H in HSteamListenSocket mean for example), and prone to errors for numerous issues and completely useless in a statically typed system.

I'm guessing some of the code was just so old (comments indicate 2005) that previous convention was followed? Another thing I notice is how namespaces are not used(at all?) when there doesn't appear to be a reason they shouldn't be, IE here, in what I assume is supposed to be the "valve std lib" folder. I would expect vstd:: or valve:: or vlib:: or vutil:: instead of V_XXX(), and typedefs of int32, which are most certainly used outside of this library, and probably wouldn't appreciate the overriding of their own definitions given the lack of namespace resolution here (though I'm not sure why cstdint int32_t wasn't used, it might have not been available in C++ since before C++11 I guess?)

Would it be acceptable to for me to make changes to incorporate namespace resolution where appropriate, and remove Hungarian notation entirely? Since there's no reason I or anyone else couldn't do this, I don't see a need for this to be taken on by the repo owners.

Additionally, regardless of the validity of the changes suggested above, making any kind of contribution to the repository is kind of tricky. There are some standards in place that make it kind of confusing whether or not something was put in place because of Hungarian notation (k_XXX, iXXX, sXXX, SXXX) or due to another style (m_ for member variables, XVarName where X isn't necessarily Hungarian notation) and I don't want to needlessly impose my own personal C++ coding style to fill in the blanks.

Is there some sort of style guideline that I can use to provide consistency with the rest of the framework and potentially other valve frameworks (eg SteamAudio)?

So far I've seen:

  • m_lowerCamelCase for members
  • s_lowerCamelCase for static members
  • g_lowerCamelCase for global variables
  • lowerCamelCase for local variables
  • idx instead of i for indexing (not sure about multiple loops?)
  • UpperCamelCase for classes
  • UpperCamelCase for functions
  • _t suffix on things like CellID_t, not sure why, guessing stands for tag?
  • I thought all macros were uppercase, but there appears to be some inconsistency in this as well

CCrypto::SymmetricEncrypt() findings

!!! This appears to be implementing AES-CBC, which is frowned upon:
http://latacora.singles/2018/04/03/cryptographic-right-answers.html

Avoid: AES-CBC

Pad length round up to the next multiple of 16
!!! When even multiple this will pad an extra 16 unnecessarily

!!! These pointer comparisons are not supported by C++. Some data may get corrupted in some builds of the software:
if ( ( pubPlaintextData > pubEncryptedData && pubPlaintextData < pubEncryptedData + cubEncryptedData ) ||
( pubEncryptedData > pubPlaintextData && pubEncryptedData < pubPlaintextData + cubPlaintextData ) )
https://stackoverflow.com/questions/9086372/how-to-compare-pointers#9086675

If two pointers p and q of the same type point to different objects that are not members of the same object or elements of the same array or to different functions, or if only one of them is null, the results of p<q, p>q, p<=q, and p>=q are unspecified.

BExtractAESRoundKeys( &key, false, roundKeysAsU32, &nRounds )
!!! This function assumes 256 bit keys: AES_set_encrypt_key( rgchTest, 256, &keyTest );
But the AES_set_encrypt_key() function above uses cubKey * 8.
I'm worried that when cubKey is not 32, this will actually use an empty (zero) key or fail.

Cross Compiling Mingw from Linux

I've been attempting to build this from Linux targeting Windows without much success.

Has anyone been able to successfully do this? All of the dependencies build fine.

Procedure for building is currently:

  1. wget the latest stable from github
  2. untar it
  3. make a subdirectoy called deps_protobuf, cd into it, and build protobuf with mingw:
    ./configure --build=x86_64-pc-linux --host=x86_64-w64-mingw32 && make
    This builds without issue
  4. make a subdirectory called deps_openssl, cd into it, and build openssl with mingw:
    ./Configure --cross-compile-prefix=x86_64-w64-mingw32- mingw64 && make
    This builds without issue
  5. Invoke cmake for GameNetworkingSockets:
    cmake -G "Unix Makefiles" --verbose=1 -DProtobuf_LIBRARIES=../deps_protobuf/libprotobuf.dll -DProtobuf_INCLUDE_DIR=../deps_protobuf/src/ -DOPENSSL_FOUND=true -DOPENSSL_ROOT_DIR=../deps_openssl/ -DOPENSSL_SSL_LIBRARY=../deps_openssl/ -DOPENSSL_CRYPTO_LIBRARY=../deps_openssl/crypto/ -DOPENSSL_INCLUDE_DIR=../deps_openssl/include/ -DCMAKE_TOOLCHAIN_FILE=path/to/cmake_toolchains/cmake-win64

Cmake is happy with protobuf, but fails to detect OpenSSL. Here is the output:

-- The C compiler identification is GNU 9.1.0
-- The CXX compiler identification is GNU 9.1.0
-- Check for working C compiler: /usr/bin/x86_64-w64-mingw32-gcc
-- Check for working C compiler: /usr/bin/x86_64-w64-mingw32-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/x86_64-w64-mingw32-g++
-- Check for working CXX compiler: /usr/bin/x86_64-w64-mingw32-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Setting build type to 'RelWithDebInfo' as none was specified.
-- Looking for BCryptEncrypt
-- Looking for BCryptEncrypt - found
-- Found Protobuf: ../deps_protobuf/libprotobuf.dll (found version "3.7.0") 
CMake Error at /usr/share/cmake-3.15/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
  system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY) (found
  version "1.1.1c")
Call Stack (most recent call first):
  /usr/share/cmake-3.15/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.15/Modules/FindOpenSSL.cmake:413 (find_package_handle_standard_args)
  src/CMakeLists.txt:8 (find_package)

What's really cryptic is that its claiming that OPENSSL_CRYPTO_LIBRARY is missing despite being explicitly defined and it also claiming that its found version 1.1.1c (?).

If I edit src/CMakeLists.txt and disable the openssl check it finishes configuring and starts to compile and stops when it hits an openssl dependency. So this appears to be the only thing holding back a mingw cross compile.

Some questions about the MTU(Maximum Transmission Unit)

In the CSteamNetworkingSockets class, we have an API called SendMessageToConnection(). It seems that we just need to pass some arguments such as: message data, data size, send type ... and then the API will call the low-level function step by step until totally send the message out.
As we all know, if your data is too big and it's size is larger than the MTU(Maximum Transmission Unit) on your IP level, the data packet will be auto sliced into some small packets by your fucking router. The packet loss rate will increase a lot and we will be suffered from this. I have read some other network protocol such as KCP, it give us a chance to set the MTU and will sliced the large data packet into small ones before it done by your router.
So, would you please to share some experiences on how to do with the MTU restriction under this lib? :)

PS: I see you had a check in _APISendMessageToConnection() function, it just compare the data size with the k_cbMaxSteamDatagramMessageSize(512*1024) and report error if we send a too large data packet. But in fact, most MTU values is much more small than 512kB(e.g. the Ethernet's MTU is 1500 Byte ), so it seems very easy to cause this problem.

Wrap SteamNetConnectionStatusChangedCallback_t with #pragma pack( push, # )

// callbacks
#if defined( VALVE_CALLBACK_PACK_SMALL )
#pragma pack( push, 4 )
#elif defined( VALVE_CALLBACK_PACK_LARGE )
#pragma pack( push, 8 )
#else
#error isteamclient.h must be included
#endif 

struct SteamNetConnectionStatusChangedCallback_t
{
    // ...
};

#pragma pack( pop )

You'll probably need to hoist the VALVE_CALLBACK_PACK_* defines out of isteamclient.h into steamclientpublic.h if possible too for the open source version.

Access error

Hi there,

I'm just trying to build the sample(C/S demo in GameNetworkingSockets\examples) ,
but it turns out a access error when I'm trying to connect to server:
image
Access exception when try to write into 0x0000000000000000
bool CCryptoKeyBase::GetRawDataAsStdString( std::string *pString ) const
{
pString->clear();
uint32 cbSize = GetRawData(nullptr);
...

IDE: VS2017 Community
Codebase: Latest commit on master
Thanks.

NAT piercing - Rough ETA? (question)

Hello!

I've been excitedly watching this project for a while, I'd love to switch to it as the primary transport protocol for my project.

Since we don't have dedicated servers yet, multiplayer sessions are user-hosted, so NAT piercing and relay servers are crucial.

I just wanted to ask if you have any rough estimate when this might be implemented?

Thanks for your time and hard work on this!

Example chat error

I followed all the steps in building section and then I wanted to start the chat example. I had to copy "GameNetworkingSockets.dll" and "libprotobuf.dll" next to the binary "example_chat" to make it run. I started my server with "example_chat server --port 9090" and the client with "example_chat client 0.0.0.0:9090". The server starts and logs the fact that is listening for incoming clients but the client fails with " 1.001678 \src\steamnetworkingsockets\clientlib\steamnetworkingsockets_lowlevel.cpp (875) : Assertion Failed: SDR service thread gave up on lock after waiting 1000ms. This directly adds to delay of processing of network packets!"

I am not sure what I am doing wrong. Hope you already encountered this problem :)
Also, can you explain briefly how do I link a new project with this library ?

P.S. I am working on windows and I used Visual Studio to build everything

Cause exception when run the test_connection sample on Windows

Before I run the test_connection sample, I have done these things:
1.Install OpenSSL(provided by Shining Light Productions, version is 1.1.0h)---same with the README.md
2.Install the Protobuf(version is 3.5.1) from source on github---same with the README.md
3.Choose visual studio as the cmake Generator,like:

cmake -G "Visual Studio 15 2017 Win64" ..
-- Selecting Windows SDK version 10.0.17134.0 to target Windows 10.0.16299.
-- The C compiler identification is MSVC 19.14.26429.4
-- The CXX compiler identification is MSVC 19.14.26429.4
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe
-- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.14.26428/bin/Hostx86/x64/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- MSVC -> forcing use of dynamically-linked runtime.
-- Initial build flags:
--   'CMAKE_C_FLAGS_DEBUG': /MDd /Zi /Ob0 /Od /RTC1
--   'CMAKE_C_FLAGS_MINSIZEREL': /MD /O1 /Ob1 /DNDEBUG
--   'CMAKE_C_FLAGS_RELEASE': /MD /O2 /Ob2 /DNDEBUG
--   'CMAKE_C_FLAGS_RELWITHDEBINFO': /MD /Zi /O2 /Ob1 /DNDEBUG
--   'CMAKE_CXX_FLAGS_DEBUG': /MDd /Zi /Ob0 /Od /RTC1
--   'CMAKE_CXX_FLAGS_MINSIZEREL': /MD /O1 /Ob1 /DNDEBUG
--   'CMAKE_CXX_FLAGS_RELEASE': /MD /O2 /Ob2 /DNDEBUG
--   'CMAKE_CXX_FLAGS_RELWITHDEBINFO': /MD /Zi /O2 /Ob1 /DNDEBUG
--
-- Found Protobuf: C:/sdk/protobuf-amd64/lib/libprotobuf.lib (found version "3.5.1")
-- Found OpenSSL: optimized;C:/OpenSSL-Win64/lib/VC/libcrypto64MD.lib;debug;C:/OpenSSL-Win64/lib/VC/libcrypto64MDd.lib (found version "1.1.0h")

-- Looking for pthread.h
-- Looking for pthread.h - not found
-- Found Threads: TRUE
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/xlt/WorkSpace/GameNetworkingSockets/build

Everything works well now, and I get a GameNetworkingSockets.sln file so I can open it in my Visual Studio 2017. When I try to build&run the test_connection.cpp, it cause a exception in class CMsgSteamDatagramCertificate‘s destructor.

CMsgSteamDatagramCertificate::~CMsgSteamDatagramCertificate() {
  // @@protoc_insertion_point(destructor:CMsgSteamDatagramCertificate)
  SharedDtor();
}

void CMsgSteamDatagramCertificate::SharedDtor() {
// cause exception there
key_data_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
} 

and the call stack is like this

 	ntdll.dll!00007ffe55e1875a()	
 	ntdll.dll!00007ffe55e1fcda()
 	ntdll.dll!00007ffe55dbfe42()	
 	ntdll.dll!00007ffe55dd4439()	
 	ucrtbase.dll!00007ffe52bacb1b()	
 	libprotobuf.dll!00007ffe22662b39()	
>	GameNetworkingSockets.dll!CMsgSteamDatagramCertificate::SharedDtor() line 247	C++
 	GameNetworkingSockets.dll!CMsgSteamDatagramCertificate::~CMsgSteamDatagramCertificate() line 243	C++
 	GameNetworkingSockets.dll!SteamNetworkingSocketsLib::CSteamNetworkConnectionBase::InitLocalCryptoWithUnsignedCert() line 721	C++
 	GameNetworkingSockets.dll!SteamNetworkingSocketsLib::CSteamNetworkConnectionBase::BThinkCryptoReady(__int64 usecNow) line 637	C++
 	GameNetworkingSockets.dll!SteamNetworkingSocketsLib::CSteamNetworkConnectionBase::InitConnectionCrypto(__int64 usecNow) line 587	C++
 	GameNetworkingSockets.dll!SteamNetworkingSocketsLib::CSteamNetworkConnectionBase::BInitConnection(unsigned int nPeerProtocolVersion, __int64 usecNow, char[1024] & errMsg) line 579	C++
 	GameNetworkingSockets.dll!SteamNetworkingSocketsLib::CSteamNetworkConnectionIPv4::BInitConnect(const netadr_t & netadrRemote, char[1024] & errMsg) line 633	C++
 	GameNetworkingSockets.dll!SteamNetworkingSocketsLib::CSteamNetworkingSockets::ConnectByIPv4Address(unsigned int nIP, unsigned short nPort) line 563	C++
 	test_connection.exe!RunSteamDatagramConnectionTest() line 321	C++
 	test_connection.exe!main() line 388	C++

I have done the same test on a Mac, but it works well.

PS: I doubt about the extern function GetEmptyStringAlreadyInited(), bu I am not sure what is the difference between it on Mac & Windows.

Add mechanism for event driven app to wait efficiently

We've been designing for real-time apps that "tick" on a relatively high frequency, and that will poll for messages at this interval.

We should provide a mechanism for apps that don't fit this model, e.g. the more traditional event-driven server model where you select()/poll() and then wake up and process the event immediately.

I think the simplest way to do this is to provide a config parameter that specifies a callback when a new message arrives. The intention would be that the app would use some mechanism (e.g. set an event on windows) to wake up their other thread that is actually going to do the work. I'm worried that somebody will actually try to process the message in the callback, and that would probably be bad. If necessary, we could put these callbacks on another thread, so that they cannot shoot themselves in the foot by doing dumb stuff.

UDP-based Protocol Question

Hey, I and my team are the creators of [laminar](https://github.com/amethyst/laminar) it is basically a protocol like a gaffer described on his website, written with rust, for the Amethyst game-engine. We saw that this library took some inspiration from there as well. We had some questions concerning the value of writing an own written semi-UDP-based protocol or using QUIC.

Question being: why aren't you using QUIC as the protocol for game networking instead of your own custom semi-reliable UDP-base protocol?

Why considering this? Well... because it is basically a well-defined protocol written by Google with high speed and alot of customizability and awesome features like congestion avoidance, fragmentation of packets, TLS 1.3 support, reliability, unreliability, order, unordered etc.

I am very curious if you also maked a decision on this point, and why you choose for QUIC-Crypto only and left the rest of QUIC away?

Bcrypt

We need to support bcrypt if we want people to be able to use this on Xbox.

Wrong function decl

In steamnetworkingsockets_flat.h, GameNetworkingSockets_RunConnectionStatusChangedCallbacks should be named SteamAPI_ISteamNetworkingSockets_RunConnectionStatusChangedCallbacks or you'll get a linker error.

My bad for making an issue instead of a pull request.

[Windows | MSVC] Errors building

Hey,
I've been trying to build this for a couple of hours now and after finally fighting off the dependencies installation process, I've started getting errors inside of the code:

I think I might have fucked up dependencies(?) but I've followed all the steps as they were written in the README(except for sodium which is still undocumented and I just followed the procedure).

Logs

Errors-only

..\src\tier0\platformtime.cpp(63): error C3892: 'g_TickFrequency': you cannot assign to a variable that is const
..\src\tier0\platformtime.cpp(64): error C3892: 'g_TickFrequencyDouble': you cannot assign to a variable that is const

C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\processenv.h(179): error C2059: syntax error: 'constant'

C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\errhandlingapi.h(91): error C2556: 'DWORD GetLastError(void)': overloaded function differs only by return type from 'int GetLastError(void)'

C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\errhandlingapi.h(89): error C2371: 'GetLastError': redefinition; different basic types

C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared\stralign.h(483): error C3861: 'wcscasecmp': identifier not found

C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\winsock2.h(122): error C2371: 'SOCKET': redefinition; different basic types

..\src\tier0\dbg.cpp(19): fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory

..\src\tier0\cpu.cpp(46): error C2059: syntax error: ':'

..\src\tier0\cpu.cpp(255): error C3861: 'strcasecmp': identifier not found

crypto.cpp.obj : error LNK2001: unresolved external symbol AES_set_decrypt_key
crypto.cpp.obj : error LNK2001: unresolved external symbol SHA256_Update
crypto.cpp.obj : error LNK2001: unresolved external symbol SHA256_Final
crypto.cpp.obj : error LNK2001: unresolved external symbol ERR_error_string_n
crypto.cpp.obj : error LNK2001: unresolved external symbol SHA256_Init
crypto.cpp.obj : error LNK2001: unresolved external symbol AES_set_encrypt_key
crypto.cpp.obj : error LNK2001: unresolved external symbol AES_encrypt
crypto.cpp.obj : error LNK2001: unresolved external symbol ERR_get_error
crypto.cpp.obj : error LNK2001: unresolved external symbol AES_decrypt
crypto_25519_libsodium.cpp.obj : error LNK2001: unresolved external symbol __imp_crypto_sign_ed25519_seed_keypair
crypto_25519_libsodium.cpp.obj : error LNK2001: unresolved external symbol __imp_crypto_sign_ed25519_verify_detached
crypto_25519_libsodium.cpp.obj : error LNK2001: unresolved external symbol __imp_crypto_scalarmult_curve25519_base
crypto_25519_libsodium.cpp.obj : error LNK2001: unresolved external symbol __imp_crypto_sign_ed25519_detached
crypto_25519_libsodium.cpp.obj : error LNK2001: unresolved external symbol __imp_crypto_scalarmult_curve25519
opensslwrapper.cpp.obj : error LNK2001: unresolved external symbol __imp_sodium_init
opensslwrapper.cpp.obj : error LNK2001: unresolved external symbol RAND_status
opensslwrapper.cpp.obj : error LNK2001: unresolved external symbol RAND_set_rand_method
src\GameNetworkingSockets.dll : fatal error LNK1120: 17 unresolved externals

C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\processenv.h(179): error C2059: syntax error: 'constant'

C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\errhandlingapi.h(91): error C2556: 'DWORD GetLastError(void)': overloaded function differs only by return type from 'int GetLastError(void)'

C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\errhandlingapi.h(89): error C2371: 'GetLastError': redefinition; different basic types

C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared\stralign.h(483): error C3861: 'wcscasecmp': identifier not found
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\winsock2.h(122): error C2371: 'SOCKET': redefinition; different basic types

..\src\vstdlib\strtools.cpp(12): fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory

c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(34): error C2371: 'SOCKET': redefinition; different basic types

c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(107): error C2556: 'int GetLastError(void)': overloaded function differs only by return type from 'DWORD GetLastError(void)'

c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(107): error C2371: 'GetLastError': redefinition; different basic types

c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(107): error C2491: 'GetLastError': definition of dllimport function not allowed

C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\processenv.h(179): error C2059: syntax error: 'constant'

C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\errhandlingapi.h(91): error C2556: 'DWORD GetLastError(void)': overloaded function differs only by return type from 'int GetLastError(void)'

C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\errhandlingapi.h(89): error C2371: 'GetLastError': redefinition; different basic types

C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared\stralign.h(483): error C3861: 'wcscasecmp': identifier not found
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\winsock2.h(122): error C2371: 'SOCKET': redefinition; different basic types

..\src\common\opensslwrapper.cpp(131): error C3861: 'pthread_atfork': identifier not found

Full

C:\Users\█████\Desktop\MHO\GameNetworkingSockets\GameNetworkingSockets\build>ninja
[2/10] Building CXX object tests\CMakeFiles\test_crypto.dir\__\src\tier0\platformtime.cpp.obj
FAILED: tests/CMakeFiles/test_crypto.dir/__/src/tier0/platformtime.cpp.obj
C:\PROGRA~2\MIB055~1\2017\COMMUN~1\VC\Tools\MSVC\1416~1.270\bin\Hostx64\x64\cl.exe  /nologo /TP -DGNUC -DLINUX -DPOSIX -DUSE_LIBSODIUM -DWIN32 -I..\tests\..\src -I..\tests\..\src\public -I..\tests\..\src\common -I..\tests\..\include -I"C:\Program Files (x86)\libsodium\include" -I"C:\Program Files (x86)\OpenSSL-Win32\include" /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1 /showIncludes /Fotests\CMakeFiles\test_crypto.dir\__\src\tier0\platformtime.cpp.obj /Fdtests\CMakeFiles\test_crypto.dir\ /FS -c ..\src\tier0\platformtime.cpp
..\src\tier0\platformtime.cpp(63): error C3892: 'g_TickFrequency': you cannot assign to a variable that is const
..\src\tier0\platformtime.cpp(64): error C3892: 'g_TickFrequencyDouble': you cannot assign to a variable that is const
..\src\tier0\platformtime.cpp(93): warning C4273: 'Plat_RelativeTicks': inconsistent dll linkage
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\tier0\../public/tier0/platformtime.h(35): note: see previous definition of 'Plat_RelativeTicks'
..\src\tier0\platformtime.cpp(126): warning C4273: 'Plat_RelativeTickFrequency': inconsistent dll linkage
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\tier0\../public/tier0/platformtime.h(36): note: see previous definition of 'Plat_RelativeTickFrequency'
..\src\tier0\platformtime.cpp(134): warning C4273: 'Plat_TickDiffMilliSec': inconsistent dll linkage
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\tier0\../public/tier0/platformtime.h(39): note: see previous definition of 'Plat_TickDiffMilliSec'
..\src\tier0\platformtime.cpp(148): warning C4273: 'Plat_TickDiffMicroSec': inconsistent dll linkage
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\tier0\../public/tier0/platformtime.h(40): note: see previous definition of 'Plat_TickDiffMicroSec'
..\src\tier0\platformtime.cpp(162): warning C4273: 'Plat_TickAddMicroSec': inconsistent dll linkage
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\tier0\../public/tier0/platformtime.h(41): note: see previous definition of 'Plat_TickAddMicroSec'
..\src\tier0\platformtime.cpp(170): warning C4273: 'Plat_FloatTime': inconsistent dll linkage
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\tier0\../public/tier0/platformtime.h(43): note: see previous definition of 'Plat_FloatTime'
..\src\tier0\platformtime.cpp(178): warning C4273: 'Plat_MSTime': inconsistent dll linkage
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\tier0\../public/tier0/platformtime.h(44): note: see previous definition of 'Plat_MSTime'
..\src\tier0\platformtime.cpp(186): warning C4273: 'Plat_USTime': inconsistent dll linkage
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\tier0\../public/tier0/platformtime.h(46): note: see previous definition of 'Plat_USTime'
..\src\tier0\platformtime.cpp(194): warning C4273: 'Plat_MSTime64': inconsistent dll linkage
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\tier0\../public/tier0/platformtime.h(45): note: see previous definition of 'Plat_MSTime64'
..\src\tier0\platformtime.cpp(205): warning C4273: 'Plat_asctime': inconsistent dll linkage
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\tier0\../public/tier0/platformtime.h(54): note: see previous definition of 'Plat_asctime'
..\src\tier0\platformtime.cpp(223): warning C4273: 'Plat_ctime': inconsistent dll linkage
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\tier0\../public/tier0/platformtime.h(55): note: see previous definition of 'Plat_ctime'
..\src\tier0\platformtime.cpp(239): warning C4273: 'Plat_timezone': inconsistent dll linkage
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\tier0\../public/tier0/platformtime.h(59): note: see previous definition of 'Plat_timezone'
..\src\tier0\platformtime.cpp(251): warning C4273: 'Plat_daylight': inconsistent dll linkage
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\tier0\../public/tier0/platformtime.h(60): note: see previous definition of 'Plat_daylight'
..\src\tier0\platformtime.cpp(264): warning C4273: 'Plat_gmtime': inconsistent dll linkage
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\tier0\../public/tier0/platformtime.h(56): note: see previous definition of 'Plat_gmtime'
..\src\tier0\platformtime.cpp(280): warning C4273: 'Plat_timegm': inconsistent dll linkage
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\tier0\../public/tier0/platformtime.h(57): note: see previous definition of 'Plat_timegm'
..\src\tier0\platformtime.cpp(294): warning C4273: 'Plat_localtime': inconsistent dll linkage
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\tier0\../public/tier0/platformtime.h(58): note: see previous definition of 'Plat_localtime'
..\src\tier0\platformtime.cpp(310): warning C4273: 'Plat_AbsoluteTime': inconsistent dll linkage
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\tier0\../public/tier0/platformtime.h(49): note: see previous definition of 'Plat_AbsoluteTime'
..\src\tier0\platformtime.cpp(331): warning C4273: 'Plat_AbsoluteTimeToFloat': inconsistent dll linkage
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\tier0\../public/tier0/platformtime.h(52): note: see previous definition of 'Plat_AbsoluteTimeToFloat'
[3/10] Building CXX object tests\CMakeFiles\test_crypto.dir\__\src\tier0\dbg.cpp.obj
FAILED: tests/CMakeFiles/test_crypto.dir/__/src/tier0/dbg.cpp.obj
C:\PROGRA~2\MIB055~1\2017\COMMUN~1\VC\Tools\MSVC\1416~1.270\bin\Hostx64\x64\cl.exe  /nologo /TP -DGNUC -DLINUX -DPOSIX -DUSE_LIBSODIUM -DWIN32 -I..\tests\..\src -I..\tests\..\src\public -I..\tests\..\src\common -I..\tests\..\include -I"C:\Program Files (x86)\libsodium\include" -I"C:\Program Files (x86)\OpenSSL-Win32\include" /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1 /showIncludes /Fotests\CMakeFiles\test_crypto.dir\__\src\tier0\dbg.cpp.obj /Fdtests\CMakeFiles\test_crypto.dir\ /FS -c ..\src\tier0\dbg.cpp
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(116): warning C4005: '_fstat': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(145): note: see previous definition of '_fstat'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(125): warning C4005: '_stat': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(147): note: see previous definition of '_stat'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(128): warning C4005: '__stat64': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(85): note: see previous definition of '__stat64'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(137): warning C4005: '_S_IFDIR': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(112): note: see previous definition of '_S_IFDIR'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(138): warning C4005: '_S_IFREG': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(115): note: see previous definition of '_S_IFREG'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(141): warning C4005: '_S_IREAD': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(116): note: see previous definition of '_S_IREAD'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(142): warning C4005: '_S_IWRITE': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(117): note: see previous definition of '_S_IWRITE'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\winnt.h(584): warning C4005: 'TEXT': macro redefinition
C:\Users\█████\Desktop\MHO\GameNetworkingSockets\GameNetworkingSockets\src\public\vstdlib/strtools.h(129): note: see previous definition of 'TEXT'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\processenv.h(179): error C2059: syntax error: 'constant'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\debugapi.h(69): warning C4005: 'OutputDebugString': macro redefinition
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(108): note: see previous definition of 'OutputDebugString'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\errhandlingapi.h(91): error C2556: 'DWORD GetLastError(void)': overloaded function differs only by return type from 'int GetLastError(void)'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(107): note: see declaration of 'GetLastError'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\errhandlingapi.h(89): error C2371: 'GetLastError': redefinition; different basic types
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(107): note: see declaration of 'GetLastError'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared\stralign.h(483): error C3861: 'wcscasecmp': identifier not found
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\winsock2.h(122): error C2371: 'SOCKET': redefinition; different basic types
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(34): note: see declaration of 'SOCKET'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\winsock2.h(391): warning C4005: 'INVALID_SOCKET': macro redefinition
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(35): note: see previous definition of 'INVALID_SOCKET'
..\src\tier0\dbg.cpp(19): fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory
[4/10] Building CXX object tests\CMakeFiles\test_crypto.dir\__\src\tier0\cpu.cpp.obj
FAILED: tests/CMakeFiles/test_crypto.dir/__/src/tier0/cpu.cpp.obj
C:\PROGRA~2\MIB055~1\2017\COMMUN~1\VC\Tools\MSVC\1416~1.270\bin\Hostx64\x64\cl.exe  /nologo /TP -DGNUC -DLINUX -DPOSIX -DUSE_LIBSODIUM -DWIN32 -I..\tests\..\src -I..\tests\..\src\public -I..\tests\..\src\common -I..\tests\..\include -I"C:\Program Files (x86)\libsodium\include" -I"C:\Program Files (x86)\OpenSSL-Win32\include" /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1 /showIncludes /Fotests\CMakeFiles\test_crypto.dir\__\src\tier0\cpu.cpp.obj /Fdtests\CMakeFiles\test_crypto.dir\ /FS -c ..\src\tier0\cpu.cpp
C:\Users\█████\Desktop\MHO\GameNetworkingSockets\GameNetworkingSockets\src\public\tier0/platform.h(116): warning C4005: '_fstat': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(145): note: see previous definition of '_fstat'
C:\Users\█████\Desktop\MHO\GameNetworkingSockets\GameNetworkingSockets\src\public\tier0/platform.h(125): warning C4005: '_stat': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(147): note: see previous definition of '_stat'
C:\Users\█████\Desktop\MHO\GameNetworkingSockets\GameNetworkingSockets\src\public\tier0/platform.h(128): warning C4005: '__stat64': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(85): note: see previous definition of '__stat64'
C:\Users\█████\Desktop\MHO\GameNetworkingSockets\GameNetworkingSockets\src\public\tier0/platform.h(137): warning C4005: '_S_IFDIR': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(112): note: see previous definition of '_S_IFDIR'
C:\Users\█████\Desktop\MHO\GameNetworkingSockets\GameNetworkingSockets\src\public\tier0/platform.h(138): warning C4005: '_S_IFREG': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(115): note: see previous definition of '_S_IFREG'
C:\Users\█████\Desktop\MHO\GameNetworkingSockets\GameNetworkingSockets\src\public\tier0/platform.h(141): warning C4005: '_S_IREAD': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(116): note: see previous definition of '_S_IREAD'
C:\Users\█████\Desktop\MHO\GameNetworkingSockets\GameNetworkingSockets\src\public\tier0/platform.h(142): warning C4005: '_S_IWRITE': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(117): note: see previous definition of '_S_IWRITE'
..\src\tier0\cpu.cpp(46): error C2059: syntax error: ':'
..\src\tier0\cpu.cpp(121): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\string.h(133): note: see declaration of 'strcpy'
..\src\tier0\cpu.cpp(255): error C3861: 'strcasecmp': identifier not found
[5/10] Linking CXX shared library src\GameNetworkingSockets.dll
FAILED: src/GameNetworkingSockets.dll src/GameNetworkingSockets.lib
cmd.exe /C "cd . && "C:\Program Files\CMake\bin\cmake.exe" -E vs_link_dll --intdir=src\CMakeFiles\GameNetworkingSockets.dir --manifests  -- C:\PROGRA~2\MIB055~1\2017\COMMUN~1\VC\Tools\MSVC\1416~1.270\bin\Hostx64\x64\link.exe /nologo src\CMakeFiles\GameNetworkingSockets.dir\common\crypto.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\crypto_textencode.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\crypto_25519.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\crypto_25519_libsodium.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\keypair.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\opensslwrapper.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\steamid.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\csteamnetworkingsockets.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\steamnetworkingsockets_flat.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\steamnetworkingsockets_connections.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\steamnetworkingsockets_lowlevel.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\steamnetworkingsockets_snp.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\steamnetworkingsockets_udp.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\steamnetworkingsockets_certs.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\steamnetworkingsockets_shared.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier0\cpu.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier0\dbg.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier0\platformtime.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier1\bitstring.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier1\netadr.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier1\utlbuffer.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier1\utlmemory.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier1\ipv6text.c.obj src\CMakeFiles\GameNetworkingSockets.dir\vstdlib\strtools.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets_messages_certs.pb.cc.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets_messages.pb.cc.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets_messages_udp.pb.cc.obj  /out:src\GameNetworkingSockets.dll /implib:src\GameNetworkingSockets.lib /pdb:src\GameNetworkingSockets.pdb /dll /version:0.0 /machine:x64 /debug /INCREMENTAL /LTCG /SUBSYSTEM:WINDOWS  C:\sdk\protobuf-amd64\lib\libprotobuf.lib "C:\Program Files (x86)\OpenSSL-Win32\lib\libcrypto.lib" ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib  && cd ."
LINK Pass 1: command "C:\PROGRA~2\MIB055~1\2017\COMMUN~1\VC\Tools\MSVC\1416~1.270\bin\Hostx64\x64\link.exe /nologo src\CMakeFiles\GameNetworkingSockets.dir\common\crypto.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\crypto_textencode.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\crypto_25519.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\crypto_25519_libsodium.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\keypair.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\opensslwrapper.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\steamid.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\csteamnetworkingsockets.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\steamnetworkingsockets_flat.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\steamnetworkingsockets_connections.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\steamnetworkingsockets_lowlevel.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\steamnetworkingsockets_snp.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\steamnetworkingsockets_udp.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\steamnetworkingsockets_certs.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\steamnetworkingsockets_shared.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier0\cpu.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier0\dbg.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier0\platformtime.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier1\bitstring.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier1\netadr.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier1\utlbuffer.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier1\utlmemory.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier1\ipv6text.c.obj src\CMakeFiles\GameNetworkingSockets.dir\vstdlib\strtools.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets_messages_certs.pb.cc.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets_messages.pb.cc.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets_messages_udp.pb.cc.obj /out:src\GameNetworkingSockets.dll /implib:src\GameNetworkingSockets.lib /pdb:src\GameNetworkingSockets.pdb /dll /version:0.0 /machine:x64 /debug /INCREMENTAL /LTCG /SUBSYSTEM:WINDOWS C:\sdk\protobuf-amd64\lib\libprotobuf.lib C:\Program Files (x86)\OpenSSL-Win32\lib\libcrypto.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:src\CMakeFiles\GameNetworkingSockets.dir/intermediate.manifest src\CMakeFiles\GameNetworkingSockets.dir/manifest.res" failed (exit code 1120) with the following output:
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/LTCG' specification
   Creating library src\GameNetworkingSockets.lib and object src\GameNetworkingSockets.exp
crypto.cpp.obj : error LNK2001: unresolved external symbol AES_set_decrypt_key
crypto.cpp.obj : error LNK2001: unresolved external symbol SHA256_Update
crypto.cpp.obj : error LNK2001: unresolved external symbol SHA256_Final
crypto.cpp.obj : error LNK2001: unresolved external symbol ERR_error_string_n
crypto.cpp.obj : error LNK2001: unresolved external symbol SHA256_Init
crypto.cpp.obj : error LNK2001: unresolved external symbol AES_set_encrypt_key
crypto.cpp.obj : error LNK2001: unresolved external symbol AES_encrypt
crypto.cpp.obj : error LNK2001: unresolved external symbol ERR_get_error
crypto.cpp.obj : error LNK2001: unresolved external symbol AES_decrypt
crypto_25519_libsodium.cpp.obj : error LNK2001: unresolved external symbol __imp_crypto_sign_ed25519_seed_keypair
crypto_25519_libsodium.cpp.obj : error LNK2001: unresolved external symbol __imp_crypto_sign_ed25519_verify_detached
crypto_25519_libsodium.cpp.obj : error LNK2001: unresolved external symbol __imp_crypto_scalarmult_curve25519_base
crypto_25519_libsodium.cpp.obj : error LNK2001: unresolved external symbol __imp_crypto_sign_ed25519_detached
crypto_25519_libsodium.cpp.obj : error LNK2001: unresolved external symbol __imp_crypto_scalarmult_curve25519
opensslwrapper.cpp.obj : error LNK2001: unresolved external symbol __imp_sodium_init
opensslwrapper.cpp.obj : error LNK2001: unresolved external symbol RAND_status
opensslwrapper.cpp.obj : error LNK2001: unresolved external symbol RAND_set_rand_method
src\GameNetworkingSockets.dll : fatal error LNK1120: 17 unresolved externals
[6/10] Building CXX object tests\CMakeFiles\test_crypto.dir\__\src\vstdlib\strtools.cpp.obj
FAILED: tests/CMakeFiles/test_crypto.dir/__/src/vstdlib/strtools.cpp.obj
C:\PROGRA~2\MIB055~1\2017\COMMUN~1\VC\Tools\MSVC\1416~1.270\bin\Hostx64\x64\cl.exe  /nologo /TP -DGNUC -DLINUX -DPOSIX -DUSE_LIBSODIUM -DWIN32 -I..\tests\..\src -I..\tests\..\src\public -I..\tests\..\src\common -I..\tests\..\include -I"C:\Program Files (x86)\libsodium\include" -I"C:\Program Files (x86)\OpenSSL-Win32\include" /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1 /showIncludes /Fotests\CMakeFiles\test_crypto.dir\__\src\vstdlib\strtools.cpp.obj /Fdtests\CMakeFiles\test_crypto.dir\ /FS -c ..\src\vstdlib\strtools.cpp
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(116): warning C4005: '_fstat': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(145): note: see previous definition of '_fstat'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(125): warning C4005: '_stat': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(147): note: see previous definition of '_stat'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(128): warning C4005: '__stat64': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(85): note: see previous definition of '__stat64'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(137): warning C4005: '_S_IFDIR': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(112): note: see previous definition of '_S_IFDIR'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(138): warning C4005: '_S_IFREG': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(115): note: see previous definition of '_S_IFREG'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(141): warning C4005: '_S_IREAD': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(116): note: see previous definition of '_S_IREAD'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(142): warning C4005: '_S_IWRITE': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(117): note: see previous definition of '_S_IWRITE'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\winnt.h(584): warning C4005: 'TEXT': macro redefinition
C:\Users\█████\Desktop\MHO\GameNetworkingSockets\GameNetworkingSockets\src\public\vstdlib/strtools.h(129): note: see previous definition of 'TEXT'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\processenv.h(179): error C2059: syntax error: 'constant'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\debugapi.h(69): warning C4005: 'OutputDebugString': macro redefinition
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(108): note: see previous definition of 'OutputDebugString'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\errhandlingapi.h(91): error C2556: 'DWORD GetLastError(void)': overloaded function differs only by return type from 'int GetLastError(void)'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(107): note: see declaration of 'GetLastError'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\errhandlingapi.h(89): error C2371: 'GetLastError': redefinition; different basic types
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(107): note: see declaration of 'GetLastError'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared\stralign.h(483): error C3861: 'wcscasecmp': identifier not found
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\winsock2.h(122): error C2371: 'SOCKET': redefinition; different basic types
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(34): note: see declaration of 'SOCKET'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\winsock2.h(391): warning C4005: 'INVALID_SOCKET': macro redefinition
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(35): note: see previous definition of 'INVALID_SOCKET'
..\src\vstdlib\strtools.cpp(12): fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory
[7/10] Building CXX object tests\CMakeFiles\test_crypto.dir\__\src\common\crypto.cpp.obj
FAILED: tests/CMakeFiles/test_crypto.dir/__/src/common/crypto.cpp.obj
C:\PROGRA~2\MIB055~1\2017\COMMUN~1\VC\Tools\MSVC\1416~1.270\bin\Hostx64\x64\cl.exe  /nologo /TP -DGNUC -DLINUX -DPOSIX -DUSE_LIBSODIUM -DWIN32 -I..\tests\..\src -I..\tests\..\src\public -I..\tests\..\src\common -I..\tests\..\include -I"C:\Program Files (x86)\libsodium\include" -I"C:\Program Files (x86)\OpenSSL-Win32\include" /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1 /showIncludes /Fotests\CMakeFiles\test_crypto.dir\__\src\common\crypto.cpp.obj /Fdtests\CMakeFiles\test_crypto.dir\ /FS -c ..\src\common\crypto.cpp
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(34): error C2371: 'SOCKET': redefinition; different basic types
C:\Program █████ (x86)\Windows Kits\10\include\10.0.17763.0\um\winsock2.h(122): note: see declaration of 'SOCKET'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(35): warning C4005: 'INVALID_SOCKET': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\winsock2.h(391): note: see previous definition of 'INVALID_SOCKET'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(107): error C2556: 'int GetLastError(void)': overloaded function differs only by return type from 'DWORD GetLastError(void)'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\errhandlingapi.h(89): note: see declaration of 'GetLastError'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(107): error C2371: 'GetLastError': redefinition; different basic types
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\errhandlingapi.h(89): note: see declaration of 'GetLastError'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(107): error C2491: 'GetLastError': definition of dllimport function not allowed
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(108): warning C4005: 'OutputDebugString': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\debugapi.h(69): note: see previous definition of 'OutputDebugString'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(116): warning C4005: '_fstat': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(145): note: see previous definition of '_fstat'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(125): warning C4005: '_stat': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(147): note: see previous definition of '_stat'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(128): warning C4005: '__stat64': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(85): note: see previous definition of '__stat64'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(137): warning C4005: '_S_IFDIR': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(112): note: see previous definition of '_S_IFDIR'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(138): warning C4005: '_S_IFREG': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(115): note: see previous definition of '_S_IFREG'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(141): warning C4005: '_S_IREAD': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(116): note: see previous definition of '_S_IREAD'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(142): warning C4005: '_S_IWRITE': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(117): note: see previous definition of '_S_IWRITE'
[8/10] Building CXX object tests\CMakeFiles\test_crypto.dir\__\src\common\opensslwrapper.cpp.obj
FAILED: tests/CMakeFiles/test_crypto.dir/__/src/common/opensslwrapper.cpp.obj
C:\PROGRA~2\MIB055~1\2017\COMMUN~1\VC\Tools\MSVC\1416~1.270\bin\Hostx64\x64\cl.exe  /nologo /TP -DGNUC -DLINUX -DPOSIX -DUSE_LIBSODIUM -DWIN32 -I..\tests\..\src -I..\tests\..\src\public -I..\tests\..\src\common -I..\tests\..\include -I"C:\Program Files (x86)\libsodium\include" -I"C:\Program Files (x86)\OpenSSL-Win32\include" /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1 /showIncludes /Fotests\CMakeFiles\test_crypto.dir\__\src\common\opensslwrapper.cpp.obj /Fdtests\CMakeFiles\test_crypto.dir\ /FS -c ..\src\common\opensslwrapper.cpp
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(116): warning C4005: '_fstat': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(145): note: see previous definition of '_fstat'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(125): warning C4005: '_stat': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(147): note: see previous definition of '_stat'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(128): warning C4005: '__stat64': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(85): note: see previous definition of '__stat64'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(137): warning C4005: '_S_IFDIR': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(112): note: see previous definition of '_S_IFDIR'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(138): warning C4005: '_S_IFREG': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(115): note: see previous definition of '_S_IFREG'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(141): warning C4005: '_S_IREAD': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(116): note: see previous definition of '_S_IREAD'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(142): warning C4005: '_S_IWRITE': macro redefinition
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\sys/stat.h(117): note: see previous definition of '_S_IWRITE'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\winnt.h(584): warning C4005: 'TEXT': macro redefinition
C:\Users\█████\Desktop\MHO\GameNetworkingSockets\GameNetworkingSockets\src\public\vstdlib/strtools.h(129): note: see previous definition of 'TEXT'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\processenv.h(179): error C2059: syntax error: 'constant'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\debugapi.h(69): warning C4005: 'OutputDebugString': macro redefinition
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(108): note: see previous definition of 'OutputDebugString'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\errhandlingapi.h(91): error C2556: 'DWORD GetLastError(void)': overloaded function differs only by return type from 'int GetLastError(void)'
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(107): note: see declaration of 'GetLastError'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\errhandlingapi.h(89): error C2371: 'GetLastError': redefinition; different basic types
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(107): note: see declaration of 'GetLastError'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared\stralign.h(483): error C3861: 'wcscasecmp': identifier not found
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\winsock2.h(122): error C2371: 'SOCKET': redefinition; different basic types
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(34): note: see declaration of 'SOCKET'
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um\winsock2.h(391): warning C4005: 'INVALID_SOCKET': macro redefinition
c:\users\█████\desktop\mho\gamenetworkingsockets\gamenetworkingsockets\src\public\tier0\platform.h(35): note: see previous definition of 'INVALID_SOCKET'
..\src\common\opensslwrapper.cpp(131): error C3861: 'pthread_atfork': identifier not found
ninja: build stopped: subcommand failed.

How build for x32 solution (Visual Studio)

Hi. How build GameNetworkingSocket for static x32 solution with Visual Studio?
Problems:
`c:\gamenetworkingsockets\src\steamnetworkingsockets\certtool../steamnetworkings
ockets_internal.h(516): error C2143: синтаксическая ошибка: отсутствие "," перед
"<"
c:\gamenetworkingsockets\src\steamnetworkingsockets\certtool../steamnetworkings
ockets_internal.h(522): error C2039: set: не является членом "std"
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.
13.26128\include\functional(21): note: см. объявление "std"
c:\gamenetworkingsockets\src\steamnetworkingsockets\certtool../steamnetworkings
ockets_internal.h(522): error C4430: отсутствует спецификатор типа - предполагае
тся int. Примечание. C++ не поддерживает int по умолчанию
c:\gamenetworkingsockets\src\steamnetworkingsockets\certtool../steamnetworkings
ockets_internal.h(522): error C2988: неопознанное объявление или определение шаб
лона
c:\gamenetworkingsockets\src\steamnetworkingsockets\certtool../steamnetworkings
ockets_internal.h(522): error C2143: синтаксическая ошибка: отсутствие "," перед
"<"
c:\gamenetworkingsockets\src\steamnetworkingsockets\certtool../steamnetworkings
ockets_internal.h(776): error C2977: vstd::LikeStdVectorTraits: слишком много ар
гументов шаблон
c:\gamenetworkingsockets\src\steamnetworkingsockets\certtool../steamnetworkings
ockets_internal.h(776): note: см. объявление "vstd::LikeStdVectorTraits"
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(68): error C2039: vector: не является членом "std"
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.
13.26128\include\functional(21): note: см. объявление "std"
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(68): error C2143: синтаксическая ошибка: отсутствие ";" перед "
<"
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(68): error C4430: отсутствует спецификатор типа - предполагаетс
я int. Примечание. C++ не поддерживает int по умолчанию
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(119): error C2065: s_vecDataCenterIDs: необъявленный идентифика
тор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(120): error C3312: не найдена вызываемая функция "begin" для ти
па "unknown-type"
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(120): error C3312: не найдена вызываемая функция "end" для типа
"unknown-type"
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(122): error C2065: id: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(160): error C4430: отсутствует спецификатор типа - предполагает
ся int. Примечание. C++ не поддерживает int по умолчанию
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(160): error C2143: синтаксическая ошибка: отсутствие "," перед
"&"
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(164): error C2065: CMsgSteamDatagramCertificate: необъявленный
идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(164): error C2146: синтаксическая ошибка: отсутствие ";" перед
идентификатором "msgCert"
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(164): error C2065: msgCert: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(165): error C2065: msgCert: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(165): error C2228: выражение слева от ".ParseFromString" должно
представлять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(165): note: тип: unknown-type
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(165): error C2065: msgSigned: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(165): error C2228: выражение слева от ".cert" должно представля
ть класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(165): note: тип: unknown-type
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(168): error C2065: msgCert: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(168): error C2228: выражение слева от ".key_data" должно предст
авлять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(168): note: тип: unknown-type
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(168): error C2228: выражение слева от ".c_str" должно представл
ять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(168): error C2228: выражение слева от ".length" должно представ
лять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(168): error C2660: CCryptoKeyBase::Set: функция не принимает 1
аргументов
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(170): error C2065: msgCert: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(170): error C2228: выражение слева от ".time_created" должно пр
едставлять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(170): note: тип: unknown-type
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(171): error C2065: msgCert: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(171): error C2228: выражение слева от ".time_expiry" должно пре
дставлять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(171): note: тип: unknown-type
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(182): error C2065: msgCert: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(182): error C2228: выражение слева от ".gameserver_datacenter_i
ds" должно представлять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(182): note: тип: unknown-type
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(184): error C2065: id: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(186): error C2065: pszJSONIndent: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(202): error C2065: pszJSONIndent: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(204): error C2065: pszJSONIndent: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(205): error C2065: sOutResult: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(208): error C2065: pszJSONIndent: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(209): error C2065: sOutResult: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(211): error C2065: pszJSONIndent: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(212): error C2065: sOutResult: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(213): error C2065: pszJSONIndent: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(214): error C2065: sOutResult: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(215): error C2065: pszJSONIndent: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(215): error C2065: msgSigned: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(215): error C2228: выражение слева от ".ca_key_id" должно предс
тавлять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(215): note: тип: unknown-type
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(216): error C2065: sOutResult: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(221): error C2065: sOutResult: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(223): error C2065: sOutResult: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(225): error C2065: sOutResult: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(226): error C2065: msgSigned: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(226): error C2228: выражение слева от ".ca_key_id" должно предс
тавлять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(226): note: тип: unknown-type
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(227): error C2065: sOutResult: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(231): error C2065: sOutResult: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(242): error C2065: s_vecDataCenterIDs: необъявленный идентифика
тор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(242): error C2228: выражение слева от ".size" должно представля
ть класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(242): note: тип: unknown-type
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(250): error C2065: CMsgSteamDatagramCertificate: необъявленный
идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(250): error C2146: синтаксическая ошибка: отсутствие ";" перед
идентификатором "msgCert"
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(250): error C2065: msgCert: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(251): error C2065: msgCert: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(251): error C2228: выражение слева от ".set_key_type" должно пр
едставлять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(251): note: тип: unknown-type
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(251): error C2065: CMsgSteamDatagramCertificate_EKeyType_ED2551
9: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(252): error C2065: msgCert: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(252): error C2228: выражение слева от ".set_key_data" должно пр
едставлять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(252): note: тип: unknown-type
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(253): error C2065: msgCert: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(253): error C2228: выражение слева от ".set_time_created" должн
о представлять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(253): note: тип: unknown-type
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(254): error C2065: msgCert: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(254): error C2228: выражение слева от ".set_time_expiry" должно
представлять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(254): note: тип: unknown-type
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(254): error C2228: выражение слева от ".time_created" должно пр
едставлять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(254): note: тип: unknown-type
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(255): error C2065: s_vecDataCenterIDs: необъявленный идентифика
тор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(256): error C3312: не найдена вызываемая функция "begin" для ти
па "unknown-type"
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(256): error C3312: не найдена вызываемая функция "end" для типа
"unknown-type"
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(256): error C2065: msgCert: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(256): error C2228: выражение слева от ".add_gameserver_datacent
er_ids" должно представлять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(256): note: тип: unknown-type
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(256): error C2065: id: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(259): error C2065: CMsgSteamDatagramCertificateSigned: необъявл
енный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(259): error C2146: синтаксическая ошибка: отсутствие ";" перед
идентификатором "msgSigned"
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(259): error C2065: msgSigned: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(260): error C2065: msgSigned: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(260): error C2228: выражение слева от ".set_cert" должно предст
авлять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(260): note: тип: unknown-type
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(260): error C2065: msgCert: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(260): error C2228: выражение слева от ".SerializeAsString" долж
но представлять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(260): note: тип: unknown-type
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(263): error C2065: msgSigned: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(263): error C2228: выражение слева от ".cert" должно представля
ть класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(263): note: тип: unknown-type
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(263): error C2228: выражение слева от ".c_str" должно представл
ять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(263): error C2228: выражение слева от ".length" должно представ
лять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(263): error C2660: CCrypto::GenerateSignature: функция не прини
мает 3 аргументов
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(264): error C2065: msgSigned: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(264): error C2228: выражение слева от ".set_ca_key_id" должно п
редставлять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(264): note: тип: unknown-type
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(265): error C2065: msgSigned: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(265): error C2228: выражение слева от ".set_ca_signature" должн
о представлять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(265): note: тип: unknown-type
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(267): error C2065: msgSigned: необъявленный идентификатор
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(267): error C2228: выражение слева от ".SerializeAsString" долж
но представлять класс, структуру или объединение
C:\GameNetworkingSockets\src\steamnetworkingsockets\certtool\steamnetworkingsock
ets_certtool.cpp(267): fatal error C1003: число ошибок превышает 100; остановка
компиляции
NMAKE : fatal error U1077: C:\PROGRA2\MICROS1\2017\ENTERP~1\VC\Tools\MSVC\1413
~1.261\bin\Hostx86\x86\cl.exe : возвращенный код "0x2"
Stop.
NMAKE : fatal error U1077: "C:\Program Files (x86)\Microsoft Visual Studio\2017
Enterprise\VC\Tools\MSVC\14.13.26128\bin\HostX86\x86\nmake.exe" : возвращенный к
од "0x2"
Stop.
NMAKE : fatal error U1077: "C:\Program Files (x86)\Microsoft Visual Studio\2017
Enterprise\VC\Tools\MSVC\14.13.26128\bin\HostX86\x86\nmake.exe" : возвращенный к
од "0x2"
Stop.

C:\GameNetworkingSockets\build>`

Please, help build for x32 solution with Visual Studio

Send a message without copying payload

Our API for receiving messages is efficient right now in that it avoids copying the payload, and also returns multiple messages at once, reducing the per-call overhead.

We should make a similar API for sending a message. The app would fill out a buffer and a message structure (or multiple such structures) and then pass them all off to the API to be dispatched at once.

The main sticking point is in the management of the buffer. Probably the app would provide a callback function to free their buffer. But I think we want to always allocate the actual message structures.

Excessive lock contention

Right now thread-safety achieved via the excessive amount of locks, this leads to performance degradation and it's killing scalability. While locks aren't slow, lock contention is. Practical solution: remove any shared states/data, and re-design the core using inter-thread message-based communication without any contention. This approach scales perfectly for traditional networking on top of UDP sockets, Disruptor works best for this.

Additional information regarding multi-threading you can find here.

Discard duplicate packet numbers (and unreliable messages)

Currently duplicate packets are not explicitly detected and discarded. This does pose some potential DoS/performance risk, but probably not huge. Perhaps more importantly, it allows an unreliable message to be delivered more than once.

Given how easy it is to detect duplicate packets, it's probably worthwhile to make an API guarantee that unreliable messages will not be delivered twice. That is a huge class of application bugs that often go undetected during testing, but then happen in the wild on the internet, that we could easily prevent.

As for out-of-order unreliable messages: I don't want to always drop them, because the application may be able to make use of them and we don't have enough context to make that judgement call here. Should we add an option to prevent out of order delivery? This gets complicated, describing exactly what the guarantees and behavior are, especially when reliable and unreliable are mixed. So it's probably best to just minimize what guarantees we make. We do provide message numbers to the application, so the application can make its own decisions pretty easily.

But there is no value in duplicate delivery, for sure, so let's always discard.

Assertion fails in AssertHeldByCurrentThread()

When I simply call GameNetworkingSockets_Init, assertion fails here:

\src\steamnetworkingsockets\clientlib\steamnetworkingsockets_lowlevel.cpp (96) : Assertion Failed: s_nLocked > 0
\src\steamnetworkingsockets\clientlib\steamnetworkingsockets_lowlevel.cpp (97) : Assertion Failed: s_threadIDLockOwner == std::this_thread::get_id()

Initialization is called only once in one thread.

test_connection doesn't run correctly built with MSVC

Fletch, any idea what this is about?

> cd build\src
>..\tests\test_connection.exe
  1.001238 \src\steamnetworkingsockets\clientlib\steamnetworkingsockets_lowlevel.cpp (827) : Assertion Failed: SDR service thread gave up on lock after waiting 1000ms.  This directly adds to delay of processing of network packets!
Assertion failed: !"TEST FAILED", file ..\tests\test_connection.cpp, line 48

Feedback on message delivery

We know which messages have been acked. Indeed, we have expended significant energy to do this efficiently. We should expose this information to the application, so that they won't re-implement this functionality themselves.

AES-GCM

We are using AES in CBC mode, which is fine, but GCM would add authentication and also probably be faster as well.

We should aim to do this before the first release, so that there are no wire compatibility issues.

Unreliable sequenced delivery

I was about to integrate the library into NetDynamics for tests, but unreliable sequenced message delivery is not supported unlike in other modern network transports. It solves a vector of design and gameplay problems in practice where a developer doesn't need a manual frame buffering and sequence tracking, but still needs a properly sequenced logic, so from my point of view this delivery type should be available.

OpenSSL version via Brew

Brew's command brew install openssl instals OpenSSL version 1.0.4. There should be a note in the docs that you need to force the install of 1.1 via [email protected].

Additionally, pkg-config needs to have it's path updated to find openssl by running this:
export PKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig"

Otherwise you'll get a Dependency libcrypto found: NO (tried cmake and framework) error.

Issue while running Ninja to build

I built protobuf no problems.
Then tried to build the library.
cmake -G Ninja is fine but when you run Ninja it errors out LNK2001.
I'm sure its just something wrong with my setup. Any advice would be appreciated. Seems to be a problem with linking protobuf.

λ cmake -G Ninja
CMake Warning:
  No source or binary directory provided.  Both will be assumed to be the
  same as the current working directory, but note that this warning will
  become a fatal error in future CMake releases.


-- The C compiler identification is MSVC 19.16.27032.1
-- The CXX compiler identification is MSVC 19.16.27032.1
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- MSVC -> forcing use of dynamically-linked runtime.
-- Initial build flags:
--   'CMAKE_C_FLAGS_DEBUG': /MDd /Zi /Ob0 /Od /RTC1
--   'CMAKE_C_FLAGS_MINSIZEREL': /MD /O1 /Ob1 /DNDEBUG
--   'CMAKE_C_FLAGS_RELEASE': /MD /O2 /Ob2 /DNDEBUG
--   'CMAKE_C_FLAGS_RELWITHDEBINFO': /MD /Zi /O2 /Ob1 /DNDEBUG
--   'CMAKE_CXX_FLAGS_DEBUG': /MDd /Zi /Ob0 /Od /RTC1
--   'CMAKE_CXX_FLAGS_MINSIZEREL': /MD /O1 /Ob1 /DNDEBUG
--   'CMAKE_CXX_FLAGS_RELEASE': /MD /O2 /Ob2 /DNDEBUG
--   'CMAKE_CXX_FLAGS_RELWITHDEBINFO': /MD /Zi /O2 /Ob1 /DNDEBUG
--
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/Marcel/Documents/Github2/other/valve-socket
[5/18] Linking CXX shared library src\GameNetworkingSockets.dll
FAILED: src/GameNetworkingSockets.dll src/GameNetworkingSockets.lib
cmd.exe /C "cd . && "C:\Program Files\CMake\bin\cmake.exe" -E vs_link_dll --intdir=src\CMakeFiles\GameNetworkingSockets.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100177~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100177~1.0\x64\mt.exe --manifests  -- C:\PROGRA~2\MIB055~1\2017\COMMUN~1\VC\Tools\MSVC\1416~1.270\bin\Hostx64\x64\link.exe /nologo src\CMakeFiles\GameNetworkingSockets.dir\common\crypto_bcrypt.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\crypto_openssl.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\crypto_25519_donna.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\crypto_25519_openssl.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\crypto_textencode.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\keypair.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\steamid.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\csteamnetworkingsockets.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\steamnetworkingsockets_flat.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\steamnetworkingsockets_connections.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\steamnetworkingsockets_lowlevel.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\steamnetworkingsockets_snp.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\steamnetworkingsockets_udp.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\steamnetworkingsockets_certs.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\steamnetworkingsockets_certstore.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\steamnetworkingsockets_shared.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier0\dbg.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier0\platformtime.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier1\bitstring.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier1\netadr.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier1\utlbuffer.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier1\utlmemory.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier1\ipv6text.c.obj src\CMakeFiles\GameNetworkingSockets.dir\vstdlib\strtools.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\opensslwrapper.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets_messages_certs.pb.cc.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets_messages.pb.cc.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets_messages_udp.pb.cc.obj  /out:src\GameNetworkingSockets.dll /implib:src\GameNetworkingSockets.lib /pdb:src\GameNetworkingSockets.pdb /dll /version:0.0 /machine:x64 /debug /INCREMENTAL /LTCG /SUBSYSTEM:WINDOWS  C:\Users\Marcel\Documents\Github2\protobuf\cmake\build\release\libprotobuf.lib "C:\Program Files\OpenSSL-Win64\lib\VC\libcrypto64MDd.lib" ws2_32.lib crypt32.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib  && cd ."
LINK Pass 1: command "C:\PROGRA~2\MIB055~1\2017\COMMUN~1\VC\Tools\MSVC\1416~1.270\bin\Hostx64\x64\link.exe /nologo src\CMakeFiles\GameNetworkingSockets.dir\common\crypto_bcrypt.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\crypto_openssl.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\crypto_25519_donna.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\crypto_25519_openssl.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\crypto_textencode.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\keypair.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\steamid.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\csteamnetworkingsockets.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\steamnetworkingsockets_flat.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\steamnetworkingsockets_connections.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\steamnetworkingsockets_lowlevel.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\steamnetworkingsockets_snp.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\clientlib\steamnetworkingsockets_udp.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\steamnetworkingsockets_certs.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\steamnetworkingsockets_certstore.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets\steamnetworkingsockets_shared.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier0\dbg.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier0\platformtime.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier1\bitstring.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier1\netadr.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier1\utlbuffer.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier1\utlmemory.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\tier1\ipv6text.c.obj src\CMakeFiles\GameNetworkingSockets.dir\vstdlib\strtools.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\common\opensslwrapper.cpp.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets_messages_certs.pb.cc.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets_messages.pb.cc.obj src\CMakeFiles\GameNetworkingSockets.dir\steamnetworkingsockets_messages_udp.pb.cc.obj /out:src\GameNetworkingSockets.dll /implib:src\GameNetworkingSockets.lib /pdb:src\GameNetworkingSockets.pdb /dll /version:0.0 /machine:x64 /debug /INCREMENTAL /LTCG /SUBSYSTEM:WINDOWS C:\Users\Marcel\Documents\Github2\protobuf\cmake\build\release\libprotobuf.lib C:\Program Files\OpenSSL-Win64\lib\VC\libcrypto64MDd.lib ws2_32.lib crypt32.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:src\CMakeFiles\GameNetworkingSockets.dir/intermediate.manifest src\CMakeFiles\GameNetworkingSockets.dir/manifest.res" failed (exit code 1120) with the following output:
LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/LTCG' specification
   Creating library src\GameNetworkingSockets.lib and object src\GameNetworkingSockets.exp
csteamnetworkingsockets.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: bool __cdecl google::protobuf::MessageLite::ParseFromString(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (__imp_?ParseFromString@MessageLite@protobuf@google@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
csteamnetworkingsockets.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const & __cdecl google::protobuf::internal::ArenaStringPtr::GetNoArena(void)const " (__imp_?GetNoArena@ArenaStringPtr@internal@protobuf@google@@QEBAAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
steamnetworkingsockets_connections.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __cdecl google::protobuf::internal::LogFinisher::operator=(class google::protobuf::internal::LogMessage &)" (__imp_??4LogFinisher@internal@protobuf@google@@QEAAXAEAVLogMessage@123@@Z)
steamnetworkingsockets_connections.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void * __cdecl google::protobuf::internal::ArenaImpl::AllocateAligned(unsigned __int64)" (__imp_?AllocateAligned@ArenaImpl@internal@protobuf@google@@QEAAPEAX_K@Z)
steamnetworkingsockets_connections.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class google::protobuf::internal::LogMessage & __cdecl google::protobuf::internal::LogMessage::operator<<(char const *)" (__imp_??6LogMessage@internal@protobuf@google@@QEAAAEAV0123@PEBD@Z)
steamnetworkingsockets_connections.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __cdecl google::protobuf::internal::LogMessage::~LogMessage(void)" (__imp_??1LogMessage@internal@protobuf@google@@QEAA@XZ)
steamnetworkingsockets_connections.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __cdecl google::protobuf::internal::LogMessage::LogMessage(enum google::protobuf::LogLevel,char const *,int)" (__imp_??0LogMessage@internal@protobuf@google@@QEAA@W4LogLevel@23@PEBDH@Z)
steamnetworkingsockets_connections.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl google::protobuf::MessageLite::SerializeAsString(void)const " (__imp_?SerializeAsString@MessageLite@protobuf@google@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
steamnetworkingsockets_connections.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl google::protobuf::Message::GetTypeName(void)const " (__imp_?GetTypeName@Message@protobuf@google@@UEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
steamnetworkingsockets_connections.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const & __cdecl google::protobuf::internal::GetEmptyStringAlreadyInited(void)" (__imp_?GetEmptyStringAlreadyInited@internal@protobuf@google@@YAAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
steamnetworkingsockets_connections.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > * __cdecl google::protobuf::internal::ArenaStringPtr::MutableNoArena(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const *)" (__imp_?MutableNoArena@ArenaStringPtr@internal@protobuf@google@@QEAAPEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBV56@@Z)
steamnetworkingsockets_connections.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __cdecl google::protobuf::internal::ArenaStringPtr::SetNoArena(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &&)" (__imp_?SetNoArena@ArenaStringPtr@internal@protobuf@google@@QEAAXPEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@$$QEAV56@@Z)
steamnetworkingsockets_connections.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) private: void __cdecl google::protobuf::Arena::AllocHook(class type_info const *,unsigned __int64)const " (__imp_?AllocHook@Arena@protobuf@google@@AEBAXPEBVtype_info@@_K@Z)
steamnetworkingsockets_udp.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: bool __cdecl google::protobuf::MessageLite::ParseFromArray(void const *,int)" (__imp_?ParseFromArray@MessageLite@protobuf@google@@QEAA_NPEBXH@Z)
steamnetworkingsockets_udp.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: int __cdecl google::protobuf::MessageLite::ByteSize(void)const " (__imp_?ByteSize@MessageLite@protobuf@google@@QEBAHXZ)
steamnetworkingsockets_certs.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static class google::protobuf::UnknownFieldSet const * __cdecl google::protobuf::UnknownFieldSet::default_instance(void)" (__imp_?default_instance@UnknownFieldSet@protobuf@google@@SAPEBV123@XZ)
steamnetworkingsockets_certs.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: bool __cdecl google::protobuf::MessageLite::SerializeToString(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)const " (__imp_?SerializeToString@MessageLite@protobuf@google@@QEBA_NPEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
steamnetworkingsockets_certs.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: int __cdecl google::protobuf::UnknownField::number(void)const " (__imp_?number@UnknownField@protobuf@google@@QEBAHXZ)
steamnetworkingsockets_certs.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class google::protobuf::UnknownField const & __cdecl google::protobuf::UnknownFieldSet::field(int)const " (__imp_?field@UnknownFieldSet@protobuf@google@@QEBAAEBVUnknownField@23@H@Z)
steamnetworkingsockets_certs.cpp.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: int __cdecl google::protobuf::UnknownFieldSet::field_count(void)const " (__imp_?field_count@UnknownFieldSet@protobuf@google@@QEBAHXZ)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static void __cdecl google::protobuf::MessageFactory::InternalRegisterGeneratedFile(char const *,void (__cdecl*)(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &))" (__imp_?InternalRegisterGeneratedFile@MessageFactory@protobuf@google@@SAXPEBDP6AXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) void __cdecl google::protobuf::GoogleOnceInitImpl(__int64 *,class google::protobuf::Closure *)" (__imp_?GoogleOnceInitImpl@protobuf@google@@YAXPEA_JPEAVClosure@12@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: int __cdecl google::protobuf::io::CodedInputStream::BytesUntilTotalBytesLimit(void)const " (__imp_?BytesUntilTotalBytesLimit@CodedInputStream@io@protobuf@google@@QEBAHXZ)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: int __cdecl google::protobuf::io::CodedInputStream::BytesUntilLimit(void)const " (__imp_?BytesUntilLimit@CodedInputStream@io@protobuf@google@@QEBAHXZ)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __cdecl google::protobuf::io::CodedInputStream::PopLimit(int)" (__imp_?PopLimit@CodedInputStream@io@protobuf@google@@QEAAXH@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: int __cdecl google::protobuf::io::CodedInputStream::PushLimit(int)" (__imp_?PushLimit@CodedInputStream@io@protobuf@google@@QEAAHH@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: bool __cdecl google::protobuf::io::CodedInputStream::ReadRaw(void *,int)" (__imp_?ReadRaw@CodedInputStream@io@protobuf@google@@QEAA_NPEAXH@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) void __cdecl google::protobuf::internal::VerifyVersion(int,int,char const *)" (__imp_?VerifyVersion@internal@protobuf@google@@YAXHHPEBD@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) void __cdecl google::protobuf::internal::AssignDescriptors(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,struct google::protobuf::internal::MigrationSchema const *,class google::protobuf::Message const * const *,unsigned int const *,class google::protobuf::MessageFactory *,struct google::protobuf::Metadata *,class google::protobuf::EnumDescriptor const * *,class google::protobuf::ServiceDescriptor const * *)" (__imp_?AssignDescriptors@internal@protobuf@google@@YAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEBUMigrationSchema@123@PEBQEBVMessage@23@PEBIPEAVMessageFactory@23@PEAUMetadata@23@PEAPEBVEnumDescriptor@23@PEAPEBVServiceDescriptor@23@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __cdecl google::protobuf::internal::FunctionClosure0::~FunctionClosure0(void)" (__imp_??1FunctionClosure0@internal@protobuf@google@@UEAA@XZ)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) void __cdecl google::protobuf::internal::InitProtobufDefaults(void)" (__imp_?InitProtobufDefaults@internal@protobuf@google@@YAXXZ)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __cdecl google::protobuf::internal::ArenaImpl::AddCleanup(void *,void (__cdecl*)(void *))" (__imp_?AddCleanup@ArenaImpl@internal@protobuf@google@@QEAAXPEAXP6AX0@Z@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void * __cdecl google::protobuf::internal::ArenaImpl::AllocateAlignedAndAddCleanup(unsigned __int64,void (__cdecl*)(void *))" (__imp_?AllocateAlignedAndAddCleanup@ArenaImpl@internal@protobuf@google@@QEAAPEAX_KP6AXPEAX@Z@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned __int64 __cdecl google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(class google::protobuf::UnknownFieldSet const &)" (__imp_?ComputeUnknownFieldsSize@WireFormat@internal@protobuf@google@@SA_KAEBVUnknownFieldSet@34@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned char * __cdecl google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(class google::protobuf::UnknownFieldSet const &,unsigned char *)" (__imp_?SerializeUnknownFieldsToArray@WireFormat@internal@protobuf@google@@SAPEAEAEBVUnknownFieldSet@34@PEAE@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static void __cdecl google::protobuf::internal::WireFormat::SerializeUnknownFields(class google::protobuf::UnknownFieldSet const &,class google::protobuf::io::CodedOutputStream *)" (__imp_?SerializeUnknownFields@WireFormat@internal@protobuf@google@@SAXAEBVUnknownFieldSet@34@PEAVCodedOutputStream@io@34@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static bool __cdecl google::protobuf::internal::WireFormat::SkipField(class google::protobuf::io::CodedInputStream *,unsigned int,class google::protobuf::UnknownFieldSet *)" (__imp_?SkipField@WireFormat@internal@protobuf@google@@SA_NPEAVCodedInputStream@io@34@IPEAVUnknownFieldSet@34@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) void __cdecl google::protobuf::internal::OnShutdownDestroyMessage(void const *)" (__imp_?OnShutdownDestroyMessage@internal@protobuf@google@@YAXPEBX@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) void __cdecl google::protobuf::internal::RegisterAllTypes(struct google::protobuf::Metadata const *,int)" (__imp_?RegisterAllTypes@internal@protobuf@google@@YAXPEBUMetadata@23@H@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static void __cdecl google::protobuf::internal::ReflectionOps::Merge(class google::protobuf::Message const &,class google::protobuf::Message *)" (__imp_?Merge@ReflectionOps@internal@protobuf@google@@SAXAEBVMessage@34@PEAV534@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned __int64 __cdecl google::protobuf::internal::WireFormatLite::UInt32Size(class google::protobuf::RepeatedField<unsigned int> const &)" (__imp_?UInt32Size@WireFormatLite@internal@protobuf@google@@SA_KAEBV?$RepeatedField@I@34@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static void __cdecl google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(int,class google::protobuf::MessageLite const &,class google::protobuf::io::CodedOutputStream *)" (__imp_?WriteMessageMaybeToArray@WireFormatLite@internal@protobuf@google@@SAXHAEBVMessageLite@34@PEAVCodedOutputStream@io@34@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static void __cdecl google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class google::protobuf::io::CodedOutputStream *)" (__imp_?WriteBytesMaybeAliased@WireFormatLite@internal@protobuf@google@@SAXHAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAVCodedOutputStream@io@34@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static void __cdecl google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class google::protobuf::io::CodedOutputStream *)" (__imp_?WriteStringMaybeAliased@WireFormatLite@internal@protobuf@google@@SAXHAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAVCodedOutputStream@io@34@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static void __cdecl google::protobuf::internal::WireFormatLite::WriteEnum(int,int,class google::protobuf::io::CodedOutputStream *)" (__imp_?WriteEnum@WireFormatLite@internal@protobuf@google@@SAXHHPEAVCodedOutputStream@io@34@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static void __cdecl google::protobuf::internal::WireFormatLite::WriteFixed64(int,unsigned __int64,class google::protobuf::io::CodedOutputStream *)" (__imp_?WriteFixed64@WireFormatLite@internal@protobuf@google@@SAXH_KPEAVCodedOutputStream@io@34@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static void __cdecl google::protobuf::internal::WireFormatLite::WriteFixed32(int,unsigned int,class google::protobuf::io::CodedOutputStream *)" (__imp_?WriteFixed32@WireFormatLite@internal@protobuf@google@@SAXHIPEAVCodedOutputStream@io@34@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static void __cdecl google::protobuf::internal::WireFormatLite::WriteUInt32(int,unsigned int,class google::protobuf::io::CodedOutputStream *)" (__imp_?WriteUInt32@WireFormatLite@internal@protobuf@google@@SAXHIPEAVCodedOutputStream@io@34@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static bool __cdecl google::protobuf::internal::WireFormatLite::ReadBytes(class google::protobuf::io::CodedInputStream *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)" (__imp_?ReadBytes@WireFormatLite@internal@protobuf@google@@SA_NPEAVCodedInputStream@io@34@PEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __cdecl google::protobuf::UnknownFieldSet::AddVarint(int,unsigned __int64)" (__imp_?AddVarint@UnknownFieldSet@protobuf@google@@QEAAXH_K@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __cdecl google::protobuf::UnknownFieldSet::MergeFrom(class google::protobuf::UnknownFieldSet const &)" (__imp_?MergeFrom@UnknownFieldSet@protobuf@google@@QEAAXAEBV123@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual unsigned char * __cdecl google::protobuf::MessageLite::SerializeWithCachedSizesToArray(unsigned char *)const " (__imp_?SerializeWithCachedSizesToArray@MessageLite@protobuf@google@@UEBAPEAEPEAE@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual void __cdecl google::protobuf::Message::CheckTypeAndMergeFrom(class google::protobuf::MessageLite const &)" (__imp_?CheckTypeAndMergeFrom@Message@protobuf@google@@UEAAXAEBVMessageLite@23@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual unsigned __int64 __cdecl google::protobuf::Message::SpaceUsedLong(void)const " (__imp_?SpaceUsedLong@Message@protobuf@google@@UEBA_KXZ)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual void __cdecl google::protobuf::Message::DiscardUnknownFields(void)" (__imp_?DiscardUnknownFields@Message@protobuf@google@@UEAAXXZ)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl google::protobuf::Message::InitializationErrorString(void)const " (__imp_?InitializationErrorString@Message@protobuf@google@@UEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static void __cdecl google::protobuf::DescriptorPool::InternalAddGeneratedFile(void const *,int)" (__imp_?InternalAddGeneratedFile@DescriptorPool@protobuf@google@@SAXPEBXH@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static void __cdecl google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(char const *,int,enum google::protobuf::internal::WireFormat::Operation,char const *)" (__imp_?VerifyUTF8StringNamedField@WireFormat@internal@protobuf@google@@SAXPEBDHW4Operation@1234@0@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual class google::protobuf::Reflection const * __cdecl google::protobuf::Message::GetReflection(void)const " (__imp_?GetReflection@Message@protobuf@google@@UEBAPEBVReflection@23@XZ)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class google::protobuf::Descriptor const * __cdecl google::protobuf::Message::GetDescriptor(void)const " (__imp_?GetDescriptor@Message@protobuf@google@@QEBAPEBVDescriptor@23@XZ)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __cdecl google::protobuf::Message::~Message(void)" (__imp_??1Message@protobuf@google@@UEAA@XZ)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __cdecl google::protobuf::Message::Message(void)" (__imp_??0Message@protobuf@google@@QEAA@XZ)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __cdecl google::protobuf::UnknownFieldSet::Swap(class google::protobuf::UnknownFieldSet *)" (__imp_?Swap@UnknownFieldSet@protobuf@google@@QEAAXPEAV123@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __cdecl google::protobuf::UnknownFieldSet::Clear(void)" (__imp_?Clear@UnknownFieldSet@protobuf@google@@QEAAXXZ)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __cdecl google::protobuf::UnknownFieldSet::~UnknownFieldSet(void)" (__imp_??1UnknownFieldSet@protobuf@google@@QEAA@XZ)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __cdecl google::protobuf::UnknownFieldSet::UnknownFieldSet(void)" (__imp_??0UnknownFieldSet@protobuf@google@@QEAA@XZ)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned __int64 __cdecl google::protobuf::internal::WireFormatLite::MessageSize(class google::protobuf::MessageLite const &)" (__imp_?MessageSize@WireFormatLite@internal@protobuf@google@@SA_KAEBVMessageLite@34@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned __int64 __cdecl google::protobuf::internal::WireFormatLite::BytesSize(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (__imp_?BytesSize@WireFormatLite@internal@protobuf@google@@SA_KAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned __int64 __cdecl google::protobuf::internal::WireFormatLite::StringSize(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (__imp_?StringSize@WireFormatLite@internal@protobuf@google@@SA_KAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned __int64 __cdecl google::protobuf::internal::WireFormatLite::EnumSize(int)" (__imp_?EnumSize@WireFormatLite@internal@protobuf@google@@SA_KH@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned __int64 __cdecl google::protobuf::internal::WireFormatLite::UInt32Size(unsigned int)" (__imp_?UInt32Size@WireFormatLite@internal@protobuf@google@@SA_KI@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned char * __cdecl google::protobuf::internal::WireFormatLite::InternalWriteMessageToArray(int,class google::protobuf::MessageLite const &,bool,unsigned char *)" (__imp_?InternalWriteMessageToArray@WireFormatLite@internal@protobuf@google@@SAPEAEHAEBVMessageLite@34@_NPEAE@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned char * __cdecl google::protobuf::internal::WireFormatLite::WriteBytesToArray(int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,unsigned char *)" (__imp_?WriteBytesToArray@WireFormatLite@internal@protobuf@google@@SAPEAEHAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAE@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned char * __cdecl google::protobuf::internal::WireFormatLite::WriteStringToArray(int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,unsigned char *)" (__imp_?WriteStringToArray@WireFormatLite@internal@protobuf@google@@SAPEAEHAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAE@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned char * __cdecl google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(int,class google::protobuf::RepeatedField<unsigned int> const &,unsigned char *)" (__imp_?WriteFixed32ToArray@WireFormatLite@internal@protobuf@google@@SAPEAEHAEBV?$RepeatedField@I@34@PEAE@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned char * __cdecl google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(int,class google::protobuf::RepeatedField<unsigned int> const &,unsigned char *)" (__imp_?WriteUInt32ToArray@WireFormatLite@internal@protobuf@google@@SAPEAEHAEBV?$RepeatedField@I@34@PEAE@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned char * __cdecl google::protobuf::internal::WireFormatLite::WriteEnumToArray(int,int,unsigned char *)" (__imp_?WriteEnumToArray@WireFormatLite@internal@protobuf@google@@SAPEAEHHPEAE@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned char * __cdecl google::protobuf::internal::WireFormatLite::WriteFixed64ToArray(int,unsigned __int64,unsigned char *)" (__imp_?WriteFixed64ToArray@WireFormatLite@internal@protobuf@google@@SAPEAEH_KPEAE@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned char * __cdecl google::protobuf::internal::WireFormatLite::WriteFixed32ToArray(int,unsigned int,unsigned char *)" (__imp_?WriteFixed32ToArray@WireFormatLite@internal@protobuf@google@@SAPEAEHIPEAE@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static bool __cdecl google::protobuf::internal::WireFormatLite::ReadMessage(class google::protobuf::io::CodedInputStream *,class google::protobuf::MessageLite *)" (__imp_?ReadMessage@WireFormatLite@internal@protobuf@google@@SA_NPEAVCodedInputStream@io@34@PEAVMessageLite@34@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static bool __cdecl google::protobuf::internal::WireFormatLite::ReadString(class google::protobuf::io::CodedInputStream *,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *)" (__imp_?ReadString@WireFormatLite@internal@protobuf@google@@SA_NPEAVCodedInputStream@io@34@PEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static int __cdecl google::protobuf::internal::WireFormatLite::GetTagFieldNumber(unsigned int)" (__imp_?GetTagFieldNumber@WireFormatLite@internal@protobuf@google@@SAHI@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) private: virtual void const * __cdecl google::protobuf::MessageLite::InternalGetTable(void)const " (__imp_?InternalGetTable@MessageLite@protobuf@google@@EEBAPEBXXZ)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual void * __cdecl google::protobuf::MessageLite::GetMaybeArenaPointer(void)const " (__imp_?GetMaybeArenaPointer@MessageLite@protobuf@google@@UEBAPEAXXZ)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual class google::protobuf::Arena * __cdecl google::protobuf::MessageLite::GetArena(void)const " (__imp_?GetArena@MessageLite@protobuf@google@@UEBAPEAVArena@23@XZ)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __cdecl google::protobuf::internal::ArenaStringPtr::AssignWithDefault(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const *,struct google::protobuf::internal::ArenaStringPtr)" (__imp_?AssignWithDefault@ArenaStringPtr@internal@protobuf@google@@QEAAXPEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@U1234@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: bool __cdecl google::protobuf::internal::ArenaStringPtr::IsDefault(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const *)const " (__imp_?IsDefault@ArenaStringPtr@internal@protobuf@google@@QEBA_NPEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > * * __cdecl google::protobuf::internal::ArenaStringPtr::UnsafeRawStringPointer(void)" (__imp_?UnsafeRawStringPointer@ArenaStringPtr@internal@protobuf@google@@QEAAPEAPEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __cdecl google::protobuf::internal::ArenaStringPtr::DestroyNoArena(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const *)" (__imp_?DestroyNoArena@ArenaStringPtr@internal@protobuf@google@@QEAAXPEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __cdecl google::protobuf::internal::ArenaStringPtr::UnsafeSetDefault(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const *)" (__imp_?UnsafeSetDefault@ArenaStringPtr@internal@protobuf@google@@QEAAXPEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __cdecl google::protobuf::internal::ArenaStringPtr::Swap(struct google::protobuf::internal::ArenaStringPtr *)" (__imp_?Swap@ArenaStringPtr@internal@protobuf@google@@QEAAXPEAU1234@@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: bool __cdecl google::protobuf::io::CodedInputStream::Skip(int)" (__imp_?Skip@CodedInputStream@io@protobuf@google@@QEAA_NH@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __cdecl google::protobuf::io::CodedInputStream::GetDirectBufferPointerInline(void const * *,int *)" (__imp_?GetDirectBufferPointerInline@CodedInputStream@io@protobuf@google@@QEAAXPEAPEBXPEAH@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned char const * __cdecl google::protobuf::io::CodedInputStream::ExpectTagFromArray(unsigned char const *,unsigned int)" (__imp_?ExpectTagFromArray@CodedInputStream@io@protobuf@google@@SAPEBEPEBEI@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: bool __cdecl google::protobuf::io::CodedInputStream::ExpectTag(unsigned int)" (__imp_?ExpectTag@CodedInputStream@io@protobuf@google@@QEAA_NI@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: struct std::pair<unsigned int,bool> __cdecl google::protobuf::io::CodedInputStream::ReadTagWithCutoffNoLastTag(unsigned int)" (__imp_?ReadTagWithCutoffNoLastTag@CodedInputStream@io@protobuf@google@@QEAA?AU?$pair@I_N@std@@I@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: bool __cdecl google::protobuf::io::CodedInputStream::ReadLittleEndian64(unsigned __int64 *)" (__imp_?ReadLittleEndian64@CodedInputStream@io@protobuf@google@@QEAA_NPEA_K@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: bool __cdecl google::protobuf::io::CodedInputStream::ReadLittleEndian32(unsigned int *)" (__imp_?ReadLittleEndian32@CodedInputStream@io@protobuf@google@@QEAA_NPEAI@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned char const * __cdecl google::protobuf::io::CodedInputStream::ReadLittleEndian32FromArray(unsigned char const *,unsigned int *)" (__imp_?ReadLittleEndian32FromArray@CodedInputStream@io@protobuf@google@@SAPEBEPEBEPEAI@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: bool __cdecl google::protobuf::io::CodedInputStream::ReadVarintSizeAsInt(int *)" (__imp_?ReadVarintSizeAsInt@CodedInputStream@io@protobuf@google@@QEAA_NPEAH@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: bool __cdecl google::protobuf::io::CodedInputStream::ReadVarint32(unsigned int *)" (__imp_?ReadVarint32@CodedInputStream@io@protobuf@google@@QEAA_NPEAI@Z)
steamnetworkingsockets_messages_certs.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __cdecl google::protobuf::internal::FunctionClosure0::FunctionClosure0(void (__cdecl*)(void),bool)" (__imp_??0FunctionClosure0@internal@protobuf@google@@QEAA@P6AXXZ_N@Z)
steamnetworkingsockets_messages.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static void __cdecl google::protobuf::internal::WireFormatLite::WriteUInt64(int,unsigned __int64,class google::protobuf::io::CodedOutputStream *)" (__imp_?WriteUInt64@WireFormatLite@internal@protobuf@google@@SAXH_KPEAVCodedOutputStream@io@34@@Z)
steamnetworkingsockets_messages.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned __int64 __cdecl google::protobuf::internal::WireFormatLite::UInt64Size(unsigned __int64)" (__imp_?UInt64Size@WireFormatLite@internal@protobuf@google@@SA_K_K@Z)
steamnetworkingsockets_messages.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned char * __cdecl google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(int,unsigned __int64,unsigned char *)" (__imp_?WriteUInt64ToArray@WireFormatLite@internal@protobuf@google@@SAPEAEH_KPEAE@Z)
steamnetworkingsockets_messages.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned char * __cdecl google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(int,unsigned int,unsigned char *)" (__imp_?WriteUInt32ToArray@WireFormatLite@internal@protobuf@google@@SAPEAEHIPEAE@Z)
steamnetworkingsockets_messages.pb.cc.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: bool __cdecl google::protobuf::io::CodedInputStream::ReadVarint64(unsigned __int64 *)" (__imp_?ReadVarint64@CodedInputStream@io@protobuf@google@@QEAA_NPEA_K@Z)
src\GameNetworkingSockets.dll : fatal error LNK1120: 107 unresolved externals
[10/18] Building CXX object src\CMakeFiles\GameNetworkingSockets_s.dir\steamnetworkingsockets_messages_udp.pb.cc.obj
ninja: build stopped: subcommand failed.```

Question about the order of reliable messages

Hi!

It’s said in the documentation of the ReceiveMessages in connection and socket that it’s guaranteed that the messages will be received in the order they’re sent, but, is that still the case if retransmissions occurs?

Imagine this scenario:

Server send clients A, B, C

Client receives A and C but not B because it needed to be retransmited
Client calls receive messages on connection
Client receives B message
Client calls receive messages again

Will the lib hold the messages till B comes or will it deliver A C B?

Thanks

C++ version ?

Hello,

I was wondering what was the C++ target version ? Or if there is a list of compilers to support ?

Best,
Max

Add "flat" interface

We should provide a "flat" C-style interface to make it easier to use this library in plain C, or bind to other languages. (E.g. #7)

It should probably have the same flat function names as will be used in the Steamworks SDK,

We'll need to figure out the best way to do the callbacks.

Java

Hi guys!
I am learning java now and i have problems to understand it most of the things in java. so is there any one with any recommendation what approach should i take and is there any game for java to play to understand it better?
any help will be appreciated.
thanks

Compiling under Windows with MinGW

Does someone have success? The compiler throws a lot of errors. I'm currently trying to fix them, but there are too many. The code itself in some places is questionable like here and here.

Sockets polling on Windows

Fletch, consider select() instead of WaitForMultipleObjects() on Windows, it performs better (surprisingly) and reports multiple completed operations in a single call without any problems.

An ideal way to talk with the kernel would be IOCP, but this requires more changes to the code and the design itself is completely different (completion-oriented vs readiness-oriented/proactor vs reactor), but in terms of performance IOCP is the most performant and efficient approach than any other on Windows.

Add versioning

Currently it is not clear when an API breaks or a feature is added. Tracking versions and releases (perhaps via something similar to GitFlow?) would make it much easier to integrate this software in another project without worries about if a change will break things out from under it.

Add general rate limit

Currently connections on Steam that are relayed are rate limited by the relays. But we should probably also implement a generic packet rate limiter and add some configuration values so the application can tune this on a global or per-connection basis.

That way basic UDPv4 connections are not vulnerable to malicious peers.

The rate limit will be applied after the nonce has been checked, so random spam packets shouldn't trigger it, only hosts who have already connected.

Question on licensing

I would like to fork tier1 from GameNetworkingSockets to provide a generic SourceSDK-styled template library.

But does BSD license also applies for src/tier1 and src/public/tier1? I see just Valve Software's copyrights in headers and no mention of BSD license.

Compiling with Clang and minbase_decls.h

Helloo,

I'm trying to compile the source code on Visual Studio 2017 with Android setup. I'm using CLang 5.0 as a compiler. "minbase_decls.h" has some definitions that gives error if there is no _MSC_VER and GNUC or COMPILER_PS3.


#ifdef _MSC_VER
   // MSVC has the align at the start of the struct
   #define ALIGN8 DECL_ALIGN(8)
   #define ALIGN16 DECL_ALIGN(16)
   #define ALIGN32 DECL_ALIGN(32)
   #define ALIGN128 DECL_ALIGN(128)

   #define ALIGN8_POST
   #define ALIGN16_POST
   #define ALIGN32_POST
   #define ALIGN128_POST
#elif defined( GNUC ) || defined( COMPILER_PS3 )
   // gnuc has the align decoration at the end
   #define ALIGN4
   #define ALIGN8
   #define ALIGN16
   #define ALIGN32
   #define ALIGN128

   #define ALIGN4_POST DECL_ALIGN(4)
   #define ALIGN8_POST DECL_ALIGN(8)
   #define ALIGN16_POST DECL_ALIGN(16)
   #define ALIGN32_POST DECL_ALIGN(32)
   #define ALIGN128_POST DECL_ALIGN(128)
#else
   #error
#endif

Well, should i define GNUC for compiling with Clang or? Thanks.

25519 support in openssl

We need to get openssl to be able to do the 25519 key exchange and signing and verification. This would enable us to delete our current custom code (which is fine, but not as fast as openssl or as closely scrutinized) and do everything with a single crypto provider.

If we use AES-GCM we could do everything with libsodium. That'd be fine, too. The main thing is to make it so that you can link with a single, standard crypto provider. (And not have any of our custom crypto code.). It might be easier to use libsodium for everything, including in steam. Upgrading openssl in the steam code is probably going to introduce a lot of complexities.

Protobuf errors during build [Windows Visual Studio]

Hey all, I'm unable to build now due to some protobuf errors. I've tried reinstalling protobuf(I'm on 3.5.1) but not having any luck.

λ cmake -G Ninja .. -DUSE_LIBSODIUM=off
-- MSVC -> forcing use of dynamically-linked runtime.
-- Initial build flags:
--   'CMAKE_C_FLAGS_DEBUG': /MDd /Zi /Ob0 /Od /RTC1
--   'CMAKE_C_FLAGS_MINSIZEREL': /MD /O1 /Ob1 /DNDEBUG
--   'CMAKE_C_FLAGS_RELEASE': /MD /O2 /Ob2 /DNDEBUG
--   'CMAKE_C_FLAGS_RELWITHDEBINFO': /MD /Zi /O2 /Ob1 /DNDEBUG
--   'CMAKE_CXX_FLAGS_DEBUG': /MDd /Zi /Ob0 /Od /RTC1
--   'CMAKE_CXX_FLAGS_MINSIZEREL': /MD /O1 /Ob1 /DNDEBUG
--   'CMAKE_CXX_FLAGS_RELEASE': /MD /O2 /Ob2 /DNDEBUG
--   'CMAKE_CXX_FLAGS_RELWITHDEBINFO': /MD /Zi /O2 /Ob1 /DNDEBUG
--
-- Looking for pthread.h
-- Looking for pthread.h - not found
-- Found Threads: TRUE
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/gregory.pease/Desktop/dev/GameNetworkingSockets/build

C:\Users\gregory.pease\Desktop\dev\GameNetworkingSockets\build (master -> origin)
λ ninja
[4/73] Building CXX object src\CMakeFiles\GameNetworkingSockets...networkingsockets\clientlib\steamnetworkingsockets_flat.cpp.obj cl : Command line warning D9025 : overriding '/EHs' with '/EHs-'
cl : Command line warning D9025 : overriding '/EHc' with '/EHc-'
cl : Command line warning D9025 : overriding '/GR' with '/GR-'
[5/73] Building CXX object src\CMakeFiles\GameNetworkingSockets.dir\common\crypto_25519.cpp.obj
cl : Command line warning D9025 : overriding '/EHs' with '/EHs-'
cl : Command line warning D9025 : overriding '/EHc' with '/EHc-'
cl : Command line warning D9025 : overriding '/GR' with '/GR-'
[6/73] Building CXX object src\CMakeFiles\GameNetworkingSockets.dir\common\keypair.cpp.obj
cl : Command line warning D9025 : overriding '/EHs' with '/EHs-'
cl : Command line warning D9025 : overriding '/EHc' with '/EHc-'
cl : Command line warning D9025 : overriding '/GR' with '/GR-'
[7/73] Building CXX object src\CMakeFiles\GameNetworkingSockets.dir\common\crypto_textencode.cpp.obj
cl : Command line warning D9025 : overriding '/EHs' with '/EHs-'
cl : Command line warning D9025 : overriding '/EHc' with '/EHc-'
cl : Command line warning D9025 : overriding '/GR' with '/GR-'
[8/73] Building CXX object src\CMakeFiles\GameNetworkingSockets.dir\common\crypto_25519_libsodium.cpp.obj
cl : Command line warning D9025 : overriding '/EHs' with '/EHs-'
cl : Command line warning D9025 : overriding '/EHc' with '/EHc-'
cl : Command line warning D9025 : overriding '/GR' with '/GR-'
[9/73] Building CXX object src\CMakeFiles\GameNetworkingSockets.dir\common\steamid.cpp.obj
cl : Command line warning D9025 : overriding '/EHs' with '/EHs-'
cl : Command line warning D9025 : overriding '/EHc' with '/EHc-'
cl : Command line warning D9025 : overriding '/GR' with '/GR-'
[10/73] Building CXX object src\CMakeFiles\GameNetworkingSockets.dir\common\crypto.cpp.obj
FAILED: src/CMakeFiles/GameNetworkingSockets.dir/common/crypto.cpp.obj
C:\PROGRA~2\MICROS~1\2017\COMMUN~1\VC\Tools\MSVC\1416~1.270\bin\Hostx64\x64\cl.exe  /nologo /TP -DCRYPTO_DISABLE_ENCRYPT_WITH_PASSWORD -DENABLE_OPENSSLCONNECTION -DGOOGLE_PROTOBUF_NO_RTTI -DGameNetworkingSockets_EXPORTS -DHAVE_OPENSSL -DPROTOBUF_USE_DLLS -DSTEAMDATAGRAMLIB_FOREXPORT -DWIN32 -D_CRT_SECURE_NO_WARNINGS -D_ITERATOR_DEBUG_LEVEL=0 -I..\src\..\include -I..\src\common -I..\src\public -Isrc -IC:\sdk\protobuf-amd64\include -I"C:\Program Files\PostgreSQL\10\include" /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1   /EHs-c- /GR- /wd4146 /GL /showIncludes /Fosrc\CMakeFiles\GameNetworkingSockets.dir\common\crypto.cpp.obj /Fdsrc\CMakeFiles\GameNetworkingSockets.dir\ /FS -c ..\src\common\crypto.cpp
cl : Command line warning D9025 : overriding '/EHs' with '/EHs-'
cl : Command line warning D9025 : overriding '/EHc' with '/EHc-'
cl : Command line warning D9025 : overriding '/GR' with '/GR-'
..\src\common\crypto.cpp(246): error C2065: 'EVP_MD_CTX_free': undeclared identifier
..\src\common\crypto.cpp(246): error C2975: 'CleanupFunc': invalid template argument for 'EVPCTXPointer', expected compile-time constant expression
..\src\common\crypto.cpp(49): note: see declaration of 'CleanupFunc'
..\src\common\crypto.cpp(324): error C2065: 'EVP_MD_CTX_free': undeclared identifier
..\src\common\crypto.cpp(324): error C2975: 'CleanupFunc': invalid template argument for 'EVPCTXPointer', expected compile-time constant expression
..\src\common\crypto.cpp(49): note: see declaration of 'CleanupFunc'
[11/73] Building CXX object src\CMakeFiles\GameNetworkingSockets.dir\common\opensslwrapper.cpp.obj
cl : Command line warning D9025 : overriding '/EHs' with '/EHs-'
cl : Command line warning D9025 : overriding '/EHc' with '/EHc-'
cl : Command line warning D9025 : overriding '/GR' with '/GR-'
[12/73] Building CXX object examples\CMakeFiles\example_chat.dir\example_chat.cpp.obj
..\examples\example_chat.cpp(71): warning C4996: 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\stdio.h(1469): note: see declaration of 'vsprintf'
..\examples\example_chat.cpp(84): warning C4996: 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\stdio.h(1469): note: see declaration of 'vsprintf'
..\examples\example_chat.cpp(333): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\stdio.h(1774): note: see declaration of 'sprintf'
..\examples\example_chat.cpp(337): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\stdio.h(1774): note: see declaration of 'sprintf'
..\examples\example_chat.cpp(346): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\stdio.h(1774): note: see declaration of 'sprintf'
..\examples\example_chat.cpp(413): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\stdio.h(1774): note: see declaration of 'sprintf'
..\examples\example_chat.cpp(420): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\stdio.h(1774): note: see declaration of 'sprintf'
..\examples\example_chat.cpp(479): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\stdio.h(1774): note: see declaration of 'sprintf'
..\examples\example_chat.cpp(482): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\stdio.h(1774): note: see declaration of 'sprintf'
..\examples\example_chat.cpp(492): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\stdio.h(1774): note: see declaration of 'sprintf'
..\examples\example_chat.cpp(498): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\ucrt\stdio.h(1774): note: see declaration of 'sprintf'
[13/73] Building CXX object src\CMakeFiles\GameNetworkingSocket...teamnetworkingsockets\clientlib\csteamnetworkingsockets.cpp.obj cl : Command line warning D9025 : overriding '/EHs' with '/EHs-'
cl : Command line warning D9025 : overriding '/EHc' with '/EHc-'
cl : Command line warning D9025 : overriding '/GR' with '/GR-'
C:\sdk\protobuf-amd64\include\google/protobuf/stubs/logging.h(100): warning C4251: 'google::protobuf::internal::LogMessage::message_': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::LogMessage'
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\xstring(4373): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(171): warning C4251: 'google::protobuf::internal::ArenaImpl::lifecycle_id_generator_': class 'google::protobuf::internal::SequenceNumber' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ArenaImpl'
C:\sdk\protobuf-amd64\include\google/protobuf/stubs/atomic_sequence_num.h(39): note: see declaration of 'google::protobuf::internal::SequenceNumber'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(225): warning C4251: 'google::protobuf::internal::ArenaImpl::options_': struct 'google::protobuf::internal::ArenaImpl::Options' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ArenaImpl'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(65): note: see declaration of 'google::protobuf::internal::ArenaImpl::Options'
C:\sdk\protobuf-amd64\include\google/protobuf/metadata_lite.h(217): warning C4251: 'google::protobuf::internal::LiteUnknownFieldSetter::buffer_': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::LiteUnknownFieldSetter'
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\xstring(4373): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1805): warning C4251: 'google::protobuf::DescriptorPool::tables_': class 'google::protobuf::internal::scoped_ptr<google::protobuf::DescriptorPool::Tables>' needs to have dll-interface to be used by clients of class 'google::protobuf::DescriptorPool'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1805): note: see declaration of 'google::protobuf::internal::scoped_ptr<google::protobuf::DescriptorPool::Tables>'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1812): warning C4251: 'google::protobuf::DescriptorPool::unused_import_track_files_': class 'std::set<std::string,std::less<_Kty>,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'google::protobuf::DescriptorPool'
        with
        [
            _Kty=std::string,
            _Ty=std::string
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1812): note: see declaration of 'std::set<std::string,std::less<_Kty>,std::allocator<_Ty>>'
        with
        [
            _Kty=std::string,
            _Ty=std::string
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/extension_set.h(640): warning C4251: 'google::protobuf::internal::ExtensionSet::extensions_': class 'std::map<int,google::protobuf::internal::ExtensionSet::Extension,std::less<int>,std::allocator<std::pair<const _Kty,_Ty>>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ExtensionSet'
        with
        [
            _Kty=int,
            _Ty=google::protobuf::internal::ExtensionSet::Extension
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/extension_set.h(569): note: see declaration of 'std::map<int,google::protobuf::internal::ExtensionSet::Extension,std::less<int>,std::allocator<std::pair<const _Kty,_Ty>>>'
        with
        [
            _Kty=int,
            _Ty=google::protobuf::internal::ExtensionSet::Extension
        ]
[14/73] Building CXX object src\CMakeFiles\GameNetworkingSocket...mnetworkingsockets\clientlib\steamnetworkingsockets_udp.cpp.obj cl : Command line warning D9025 : overriding '/EHs' with '/EHs-'
cl : Command line warning D9025 : overriding '/EHc' with '/EHc-'
cl : Command line warning D9025 : overriding '/GR' with '/GR-'
C:\sdk\protobuf-amd64\include\google/protobuf/stubs/logging.h(100): warning C4251: 'google::protobuf::internal::LogMessage::message_': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::LogMessage'
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\xstring(4373): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(171): warning C4251: 'google::protobuf::internal::ArenaImpl::lifecycle_id_generator_': class 'google::protobuf::internal::SequenceNumber' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ArenaImpl'
C:\sdk\protobuf-amd64\include\google/protobuf/stubs/atomic_sequence_num.h(39): note: see declaration of 'google::protobuf::internal::SequenceNumber'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(225): warning C4251: 'google::protobuf::internal::ArenaImpl::options_': struct 'google::protobuf::internal::ArenaImpl::Options' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ArenaImpl'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(65): note: see declaration of 'google::protobuf::internal::ArenaImpl::Options'
C:\sdk\protobuf-amd64\include\google/protobuf/metadata_lite.h(217): warning C4251: 'google::protobuf::internal::LiteUnknownFieldSetter::buffer_': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::LiteUnknownFieldSetter'
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\xstring(4373): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1805): warning C4251: 'google::protobuf::DescriptorPool::tables_': class 'google::protobuf::internal::scoped_ptr<google::protobuf::DescriptorPool::Tables>' needs to have dll-interface to be used by clients of class 'google::protobuf::DescriptorPool'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1805): note: see declaration of 'google::protobuf::internal::scoped_ptr<google::protobuf::DescriptorPool::Tables>'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1812): warning C4251: 'google::protobuf::DescriptorPool::unused_import_track_files_': class 'std::set<std::string,std::less<_Kty>,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'google::protobuf::DescriptorPool'
        with
        [
            _Kty=std::string,
            _Ty=std::string
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1812): note: see declaration of 'std::set<std::string,std::less<_Kty>,std::allocator<_Ty>>'
        with
        [
            _Kty=std::string,
            _Ty=std::string
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/extension_set.h(640): warning C4251: 'google::protobuf::internal::ExtensionSet::extensions_': class 'std::map<int,google::protobuf::internal::ExtensionSet::Extension,std::less<int>,std::allocator<std::pair<const _Kty,_Ty>>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ExtensionSet'
        with
        [
            _Kty=int,
            _Ty=google::protobuf::internal::ExtensionSet::Extension
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/extension_set.h(569): note: see declaration of 'std::map<int,google::protobuf::internal::ExtensionSet::Extension,std::less<int>,std::allocator<std::pair<const _Kty,_Ty>>>'
        with
        [
            _Kty=int,
            _Ty=google::protobuf::internal::ExtensionSet::Extension
        ]
[15/73] Building CXX object src\CMakeFiles\GameNetworkingSocket...orkingsockets\clientlib\steamnetworkingsockets_lowlevel.cpp.obj cl : Command line warning D9025 : overriding '/EHs' with '/EHs-'
cl : Command line warning D9025 : overriding '/EHc' with '/EHc-'
cl : Command line warning D9025 : overriding '/GR' with '/GR-'
C:\sdk\protobuf-amd64\include\google/protobuf/stubs/logging.h(100): warning C4251: 'google::protobuf::internal::LogMessage::message_': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::LogMessage'
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\xstring(4373): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(171): warning C4251: 'google::protobuf::internal::ArenaImpl::lifecycle_id_generator_': class 'google::protobuf::internal::SequenceNumber' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ArenaImpl'
C:\sdk\protobuf-amd64\include\google/protobuf/stubs/atomic_sequence_num.h(39): note: see declaration of 'google::protobuf::internal::SequenceNumber'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(225): warning C4251: 'google::protobuf::internal::ArenaImpl::options_': struct 'google::protobuf::internal::ArenaImpl::Options' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ArenaImpl'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(65): note: see declaration of 'google::protobuf::internal::ArenaImpl::Options'
C:\sdk\protobuf-amd64\include\google/protobuf/metadata_lite.h(217): warning C4251: 'google::protobuf::internal::LiteUnknownFieldSetter::buffer_': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::LiteUnknownFieldSetter'
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\xstring(4373): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1805): warning C4251: 'google::protobuf::DescriptorPool::tables_': class 'google::protobuf::internal::scoped_ptr<google::protobuf::DescriptorPool::Tables>' needs to have dll-interface to be used by clients of class 'google::protobuf::DescriptorPool'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1805): note: see declaration of 'google::protobuf::internal::scoped_ptr<google::protobuf::DescriptorPool::Tables>'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1812): warning C4251: 'google::protobuf::DescriptorPool::unused_import_track_files_': class 'std::set<std::string,std::less<_Kty>,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'google::protobuf::DescriptorPool'
        with
        [
            _Kty=std::string,
            _Ty=std::string
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1812): note: see declaration of 'std::set<std::string,std::less<_Kty>,std::allocator<_Ty>>'
        with
        [
            _Kty=std::string,
            _Ty=std::string
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/extension_set.h(640): warning C4251: 'google::protobuf::internal::ExtensionSet::extensions_': class 'std::map<int,google::protobuf::internal::ExtensionSet::Extension,std::less<int>,std::allocator<std::pair<const _Kty,_Ty>>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ExtensionSet'
        with
        [
            _Kty=int,
            _Ty=google::protobuf::internal::ExtensionSet::Extension
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/extension_set.h(569): note: see declaration of 'std::map<int,google::protobuf::internal::ExtensionSet::Extension,std::less<int>,std::allocator<std::pair<const _Kty,_Ty>>>'
        with
        [
            _Kty=int,
            _Ty=google::protobuf::internal::ExtensionSet::Extension
        ]
[16/73] Building CXX object src\CMakeFiles\GameNetworkingSocket...dir\steamnetworkingsockets\steamnetworkingsockets_certs.cpp.obj cl : Command line warning D9025 : overriding '/EHs' with '/EHs-'
cl : Command line warning D9025 : overriding '/EHc' with '/EHc-'
cl : Command line warning D9025 : overriding '/GR' with '/GR-'
C:\sdk\protobuf-amd64\include\google/protobuf/stubs/logging.h(100): warning C4251: 'google::protobuf::internal::LogMessage::message_': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::LogMessage'
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\xstring(4373): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(171): warning C4251: 'google::protobuf::internal::ArenaImpl::lifecycle_id_generator_': class 'google::protobuf::internal::SequenceNumber' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ArenaImpl'
C:\sdk\protobuf-amd64\include\google/protobuf/stubs/atomic_sequence_num.h(39): note: see declaration of 'google::protobuf::internal::SequenceNumber'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(225): warning C4251: 'google::protobuf::internal::ArenaImpl::options_': struct 'google::protobuf::internal::ArenaImpl::Options' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ArenaImpl'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(65): note: see declaration of 'google::protobuf::internal::ArenaImpl::Options'
C:\sdk\protobuf-amd64\include\google/protobuf/metadata_lite.h(217): warning C4251: 'google::protobuf::internal::LiteUnknownFieldSetter::buffer_': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::LiteUnknownFieldSetter'
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\xstring(4373): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1805): warning C4251: 'google::protobuf::DescriptorPool::tables_': class 'google::protobuf::internal::scoped_ptr<google::protobuf::DescriptorPool::Tables>' needs to have dll-interface to be used by clients of class 'google::protobuf::DescriptorPool'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1805): note: see declaration of 'google::protobuf::internal::scoped_ptr<google::protobuf::DescriptorPool::Tables>'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1812): warning C4251: 'google::protobuf::DescriptorPool::unused_import_track_files_': class 'std::set<std::string,std::less<_Kty>,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'google::protobuf::DescriptorPool'
        with
        [
            _Kty=std::string,
            _Ty=std::string
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1812): note: see declaration of 'std::set<std::string,std::less<_Kty>,std::allocator<_Ty>>'
        with
        [
            _Kty=std::string,
            _Ty=std::string
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/extension_set.h(640): warning C4251: 'google::protobuf::internal::ExtensionSet::extensions_': class 'std::map<int,google::protobuf::internal::ExtensionSet::Extension,std::less<int>,std::allocator<std::pair<const _Kty,_Ty>>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ExtensionSet'
        with
        [
            _Kty=int,
            _Ty=google::protobuf::internal::ExtensionSet::Extension
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/extension_set.h(569): note: see declaration of 'std::map<int,google::protobuf::internal::ExtensionSet::Extension,std::less<int>,std::allocator<std::pair<const _Kty,_Ty>>>'
        with
        [
            _Kty=int,
            _Ty=google::protobuf::internal::ExtensionSet::Extension
        ]
[17/73] Building CXX object src\CMakeFiles\GameNetworkingSocket...mnetworkingsockets\clientlib\steamnetworkingsockets_snp.cpp.obj cl : Command line warning D9025 : overriding '/EHs' with '/EHs-'
cl : Command line warning D9025 : overriding '/EHc' with '/EHc-'
cl : Command line warning D9025 : overriding '/GR' with '/GR-'
C:\sdk\protobuf-amd64\include\google/protobuf/stubs/logging.h(100): warning C4251: 'google::protobuf::internal::LogMessage::message_': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::LogMessage'
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\xstring(4373): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(171): warning C4251: 'google::protobuf::internal::ArenaImpl::lifecycle_id_generator_': class 'google::protobuf::internal::SequenceNumber' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ArenaImpl'
C:\sdk\protobuf-amd64\include\google/protobuf/stubs/atomic_sequence_num.h(39): note: see declaration of 'google::protobuf::internal::SequenceNumber'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(225): warning C4251: 'google::protobuf::internal::ArenaImpl::options_': struct 'google::protobuf::internal::ArenaImpl::Options' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ArenaImpl'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(65): note: see declaration of 'google::protobuf::internal::ArenaImpl::Options'
C:\sdk\protobuf-amd64\include\google/protobuf/metadata_lite.h(217): warning C4251: 'google::protobuf::internal::LiteUnknownFieldSetter::buffer_': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::LiteUnknownFieldSetter'
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\xstring(4373): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1805): warning C4251: 'google::protobuf::DescriptorPool::tables_': class 'google::protobuf::internal::scoped_ptr<google::protobuf::DescriptorPool::Tables>' needs to have dll-interface to be used by clients of class 'google::protobuf::DescriptorPool'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1805): note: see declaration of 'google::protobuf::internal::scoped_ptr<google::protobuf::DescriptorPool::Tables>'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1812): warning C4251: 'google::protobuf::DescriptorPool::unused_import_track_files_': class 'std::set<std::string,std::less<_Kty>,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'google::protobuf::DescriptorPool'
        with
        [
            _Kty=std::string,
            _Ty=std::string
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1812): note: see declaration of 'std::set<std::string,std::less<_Kty>,std::allocator<_Ty>>'
        with
        [
            _Kty=std::string,
            _Ty=std::string
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/extension_set.h(640): warning C4251: 'google::protobuf::internal::ExtensionSet::extensions_': class 'std::map<int,google::protobuf::internal::ExtensionSet::Extension,std::less<int>,std::allocator<std::pair<const _Kty,_Ty>>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ExtensionSet'
        with
        [
            _Kty=int,
            _Ty=google::protobuf::internal::ExtensionSet::Extension
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/extension_set.h(569): note: see declaration of 'std::map<int,google::protobuf::internal::ExtensionSet::Extension,std::less<int>,std::allocator<std::pair<const _Kty,_Ty>>>'
        with
        [
            _Kty=int,
            _Ty=google::protobuf::internal::ExtensionSet::Extension
        ]
[18/73] Building CXX object src\CMakeFiles\GameNetworkingSocket...ingsockets\clientlib\steamnetworkingsockets_connections.cpp.obj cl : Command line warning D9025 : overriding '/EHs' with '/EHs-'
cl : Command line warning D9025 : overriding '/EHc' with '/EHc-'
cl : Command line warning D9025 : overriding '/GR' with '/GR-'
C:\sdk\protobuf-amd64\include\google/protobuf/stubs/logging.h(100): warning C4251: 'google::protobuf::internal::LogMessage::message_': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::LogMessage'
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\xstring(4373): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(171): warning C4251: 'google::protobuf::internal::ArenaImpl::lifecycle_id_generator_': class 'google::protobuf::internal::SequenceNumber' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ArenaImpl'
C:\sdk\protobuf-amd64\include\google/protobuf/stubs/atomic_sequence_num.h(39): note: see declaration of 'google::protobuf::internal::SequenceNumber'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(225): warning C4251: 'google::protobuf::internal::ArenaImpl::options_': struct 'google::protobuf::internal::ArenaImpl::Options' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ArenaImpl'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(65): note: see declaration of 'google::protobuf::internal::ArenaImpl::Options'
C:\sdk\protobuf-amd64\include\google/protobuf/metadata_lite.h(217): warning C4251: 'google::protobuf::internal::LiteUnknownFieldSetter::buffer_': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::LiteUnknownFieldSetter'
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\xstring(4373): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1805): warning C4251: 'google::protobuf::DescriptorPool::tables_': class 'google::protobuf::internal::scoped_ptr<google::protobuf::DescriptorPool::Tables>' needs to have dll-interface to be used by clients of class 'google::protobuf::DescriptorPool'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1805): note: see declaration of 'google::protobuf::internal::scoped_ptr<google::protobuf::DescriptorPool::Tables>'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1812): warning C4251: 'google::protobuf::DescriptorPool::unused_import_track_files_': class 'std::set<std::string,std::less<_Kty>,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'google::protobuf::DescriptorPool'
        with
        [
            _Kty=std::string,
            _Ty=std::string
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1812): note: see declaration of 'std::set<std::string,std::less<_Kty>,std::allocator<_Ty>>'
        with
        [
            _Kty=std::string,
            _Ty=std::string
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/extension_set.h(640): warning C4251: 'google::protobuf::internal::ExtensionSet::extensions_': class 'std::map<int,google::protobuf::internal::ExtensionSet::Extension,std::less<int>,std::allocator<std::pair<const _Kty,_Ty>>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ExtensionSet'
        with
        [
            _Kty=int,
            _Ty=google::protobuf::internal::ExtensionSet::Extension
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/extension_set.h(569): note: see declaration of 'std::map<int,google::protobuf::internal::ExtensionSet::Extension,std::less<int>,std::allocator<std::pair<const _Kty,_Ty>>>'
        with
        [
            _Kty=int,
            _Ty=google::protobuf::internal::ExtensionSet::Extension
        ]
[19/73] Building CXX object src\CMakeFiles\GameNetworkingSocket...ir\steamnetworkingsockets\steamnetworkingsockets_shared.cpp.obj cl : Command line warning D9025 : overriding '/EHs' with '/EHs-'
cl : Command line warning D9025 : overriding '/EHc' with '/EHc-'
cl : Command line warning D9025 : overriding '/GR' with '/GR-'
C:\sdk\protobuf-amd64\include\google/protobuf/stubs/logging.h(100): warning C4251: 'google::protobuf::internal::LogMessage::message_': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::LogMessage'
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\xstring(4373): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(171): warning C4251: 'google::protobuf::internal::ArenaImpl::lifecycle_id_generator_': class 'google::protobuf::internal::SequenceNumber' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ArenaImpl'
C:\sdk\protobuf-amd64\include\google/protobuf/stubs/atomic_sequence_num.h(39): note: see declaration of 'google::protobuf::internal::SequenceNumber'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(225): warning C4251: 'google::protobuf::internal::ArenaImpl::options_': struct 'google::protobuf::internal::ArenaImpl::Options' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ArenaImpl'
C:\sdk\protobuf-amd64\include\google/protobuf/arena_impl.h(65): note: see declaration of 'google::protobuf::internal::ArenaImpl::Options'
C:\sdk\protobuf-amd64\include\google/protobuf/metadata_lite.h(217): warning C4251: 'google::protobuf::internal::LiteUnknownFieldSetter::buffer_': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::LiteUnknownFieldSetter'
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include\xstring(4373): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1805): warning C4251: 'google::protobuf::DescriptorPool::tables_': class 'google::protobuf::internal::scoped_ptr<google::protobuf::DescriptorPool::Tables>' needs to have dll-interface to be used by clients of class 'google::protobuf::DescriptorPool'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1805): note: see declaration of 'google::protobuf::internal::scoped_ptr<google::protobuf::DescriptorPool::Tables>'
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1812): warning C4251: 'google::protobuf::DescriptorPool::unused_import_track_files_': class 'std::set<std::string,std::less<_Kty>,std::allocator<_Ty>>' needs to have dll-interface to be used by clients of class 'google::protobuf::DescriptorPool'
        with
        [
            _Kty=std::string,
            _Ty=std::string
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/descriptor.h(1812): note: see declaration of 'std::set<std::string,std::less<_Kty>,std::allocator<_Ty>>'
        with
        [
            _Kty=std::string,
            _Ty=std::string
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/extension_set.h(640): warning C4251: 'google::protobuf::internal::ExtensionSet::extensions_': class 'std::map<int,google::protobuf::internal::ExtensionSet::Extension,std::less<int>,std::allocator<std::pair<const _Kty,_Ty>>>' needs to have dll-interface to be used by clients of class 'google::protobuf::internal::ExtensionSet'
        with
        [
            _Kty=int,
            _Ty=google::protobuf::internal::ExtensionSet::Extension
        ]
C:\sdk\protobuf-amd64\include\google/protobuf/extension_set.h(569): note: see declaration of 'std::map<int,google::protobuf::internal::ExtensionSet::Extension,std::less<int>,std::allocator<std::pair<const _Kty,_Ty>>>'
        with
        [
            _Kty=int,
            _Ty=google::protobuf::internal::ExtensionSet::Extension
        ]
ninja: build stopped: subcommand failed.```

May we please have a C# wrapper?

I want to start things off right and introduce myself. I am MostHated. I would like to request, please, that a C# wrapper be created so that us Unity users who are not the most amazing programmers in the world can still enjoy all the amazing Valve goodness.

Sodium not found? [Windows Visual Studio]

Hey all, recently tried to rebuild as specified in the README.md but was unable to do so.

λ cd build

C:\Users\gregory.pease\Desktop\dev\GameNetworkingSockets\build (master -> origin)
λ set PATH=%PATH%;C:\sdk\protobuf-amd64\bin

C:\Users\gregory.pease\Desktop\dev\GameNetworkingSockets\build (master -> origin)
λ vcvarsall amd64
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.9.2
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

C:\Users\gregory.pease\Desktop\dev\GameNetworkingSockets\build (master -> origin)
λ cmake -G Ninja ..
-- The C compiler identification is MSVC 19.16.27024.1
-- The CXX compiler identification is MSVC 19.16.27024.1
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- MSVC -> forcing use of dynamically-linked runtime.
-- Initial build flags:
--   'CMAKE_C_FLAGS_DEBUG': /MDd /Zi /Ob0 /Od /RTC1
--   'CMAKE_C_FLAGS_MINSIZEREL': /MD /O1 /Ob1 /DNDEBUG
--   'CMAKE_C_FLAGS_RELEASE': /MD /O2 /Ob2 /DNDEBUG
--   'CMAKE_C_FLAGS_RELWITHDEBINFO': /MD /Zi /O2 /Ob1 /DNDEBUG
--   'CMAKE_CXX_FLAGS_DEBUG': /MDd /Zi /Ob0 /Od /RTC1
--   'CMAKE_CXX_FLAGS_MINSIZEREL': /MD /O1 /Ob1 /DNDEBUG
--   'CMAKE_CXX_FLAGS_RELEASE': /MD /O2 /Ob2 /DNDEBUG
--   'CMAKE_CXX_FLAGS_RELWITHDEBINFO': /MD /Zi /O2 /Ob1 /DNDEBUG
--
-- Found Protobuf: C:/sdk/protobuf-amd64/lib/libprotobuf.lib (found version "3.5.1")
-- Found OpenSSL: C:/Program Files/PostgreSQL/10/lib/libeay32MD.lib (found version "1.0.2n")
CMake Error at C:/Program Files/CMake/share/cmake-3.13/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find sodium (missing: sodium_LIBRARY_RELEASE sodium_LIBRARY_DEBUG
  sodium_INCLUDE_DIR)
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.13/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
  cmake/Findsodium.cmake:227 (find_package_handle_standard_args)
  src/CMakeLists.txt:4 (find_package)


-- Configuring incomplete, errors occurred!
See also "C:/Users/gregory.pease/Desktop/dev/GameNetworkingSockets/build/CMakeFiles/CMakeOutput.log".```

Java / Python bindings

First of all, thank you for releasing the library as open source!
Are there any plans implementing Java and/or Python bindings?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.