Closed blockspacer closed 2 years ago
Hmm this is very weird. the IPC code is built every month on windows and is used as part of traced.exe and other .exe that we publish.
Either you are passing some weird gn args, or this is some weird side effect of something that happens only on the amalgamated SDK build
Actually I know what's going on. You are definitely missing Ws2_32.lib (the winsock library) there. This is where all the socket api come from.
@primiano I use amalgamated SDK build and add_library(perfetto STATIC perfetto/sdk/perfetto.cc)
from https://perfetto.dev/docs/instrumentation/tracing-sdk
Note that i had to change defines
target_compile_definitions(perfetto_sdk PRIVATE
NOMINMAX # WINDOWS: to avoid defining min/max macros
_WINSOCKAPI_ # WINDOWS: to avoid re-definition in WinSock2.h
)
Without NOMINMAX
i get error
perfetto.cc(3090,14): error: expected unqualified-id
std::min(count - written, static_cast<size_t>(UINT32_MAX)));
Without _WINSOCKAPI_
i get error
In file included from C:\.conan\2d5c3f\1\sdk\perfetto.cc:68837:
In file included from C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\WS2tcpip.h:43:
In file included from C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\winsock2.h:116:
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\ws2def.h(240,16): error: redefinition of 'sockaddr'
typedef struct sockaddr {
Windows 10, clang-cl
Please look at the set of defines that we use in the standalone build in the .gn files
It seemed it was building above (in the initial comment) and the problem was only linking. What changed?
I linked Ws2_32.lib and defined NOMINMAX
and _WINSOCKAPI_
manually. Issue solved. Thank you very much.
I'm trying build sdk/perfetto.cc and link with it as in https://perfetto.dev/docs/instrumentation/tracing-sdk