Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUILD] Link failure using x64 Windows DLL #2202

Closed
Dangeroustuber opened this issue Jun 27, 2023 · 20 comments · Fixed by #2387
Closed

[BUILD] Link failure using x64 Windows DLL #2202

Dangeroustuber opened this issue Jun 27, 2023 · 20 comments · Fixed by #2387
Assignees
Labels
bug Something isn't working

Comments

@Dangeroustuber
Copy link

Environment
Using main branch
x64 Windows 10
Microsoft Visual Studio Enterprise 2022 (64-bit) - 17.6.2

Steps to reproduce

  • Clone repo
  • Build with cmake using the following options (cmake does not recognize OPENTELEMETRY_BUILD_DLL option by itself so you have to add it manually):
    image
  • Build the generated visual studio solution for Debug x64
  • Include the following code in a program and copy the dll next to the exe:
#define OPENTELEMETRY_BUILD_IMPORT_DLL

#include "opentelemetry/exporters/otlp/otlp_http_exporter_factory.h"
#include "opentelemetry/exporters/otlp/otlp_http_exporter_options.h"
#include "opentelemetry/sdk/common/global_log_handler.h"
#include "opentelemetry/sdk/trace/processor.h"
#include "opentelemetry/sdk/trace/simple_processor_factory.h"
#include "opentelemetry/sdk/trace/tracer_provider_factory.h"
#include "opentelemetry/trace/provider.h"

namespace trace = opentelemetry::trace;
namespace trace_sdk = opentelemetry::sdk::trace;
namespace otlp = opentelemetry::exporter::otlp;

...

opentelemetry::exporter::otlp::OtlpHttpExporterOptions opts;

// Create OTLP exporter instance
auto exporter = otlp::OtlpHttpExporterFactory::Create(opts);
auto processor = trace_sdk::SimpleSpanProcessorFactory::Create(std::move(exporter));
std::shared_ptr<opentelemetry::trace::TracerProvider> provider = trace_sdk::TracerProviderFactory::Create(std::move(processor));
// Set the global trace provider
trace::Provider::SetTracerProvider(provider);
  • Define the macros in the preprocessor of the project where the program is _SILENCE_ALL_CXX20_DEPRECATION_WARNINGS HAVE_CPP_STDLIB
  • Build the program.

What is the expected behavior?
Successful compilation.
from the docs:
NOTE: the current build produces a single DLL which includes API, SDK and exporters. This MAY change in future.

What is the actual behavior?
Error during compilation

2>xxx.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits,class std::allocator > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultHttpTracesEndpoint(void)" (?GetOtlpDefaultHttpTracesEndpoint@otlp@exporter@v1@opentelemetry@@ya?AV?$basic_string@DU?$char_traits@D@std@@v?$allocator@D@2@@std@@xz) referenced in function "class std::basic_string<char,struct std::char_traits,class std::allocator > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultHttpEndpoint(void)" (?GetOtlpDefaultHttpEndpoint@otlp@exporter@v1@opentelemetry@@ya?AV?$basic_string@DU?$char_traits@D@std@@v?$allocator@D@2@@std@@xz)
2>xxx.obj : error LNK2019: unresolved external symbol "class std::chrono::duration<__int64,struct std::ratio<1,10000000> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultTracesTimeout(void)" (?GetOtlpDefaultTracesTimeout@otlp@exporter@v1@opentelemetry@@ya?AV?$duration@_JU?$ratio@$00$0JIJGIA@@std@@@chrono@std@@xz) referenced in function "class std::chrono::duration<__int64,struct std::ratio<1,10000000> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultTimeout(void)" (?GetOtlpDefaultTimeout@otlp@exporter@v1@opentelemetry@@ya?AV?$duration@_JU?$ratio@$00$0JIJGIA@@std@@@chrono@std@@xz)
2>xxx.obj : error LNK2019: unresolved external symbol "class std::multimap<class std::basic_string<char,struct std::char_traits,class std::allocator >,class std::basic_string<char,struct std::char_traits,class std::allocator >,struct opentelemetry::v1::exporter::otlp::cmp_ic,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits,class std::allocator > const ,class std::basic_string<char,struct std::char_traits,class std::allocator > > > > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultTracesHeaders(void)" (?GetOtlpDefaultTracesHeaders@otlp@exporter@v1@opentelemetry@@ya?AV?$multimap@V?$basic_string@DU?$char_traits@D@std@@v?$allocator@D@2@@std@@v12@Ucmp_ic@otlp@exporter@v1@opentelemetry@@v?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@v?$allocator@D@2@@std@@v12@@std@@@2@@std@@xz) referenced in function "class std::multimap<class std::basic_string<char,struct std::char_traits,class std::allocator >,class std::basic_string<char,struct std::char_traits,class std::allocator >,struct opentelemetry::v1::exporter::otlp::cmp_ic,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits,class std::allocator > const ,class std::basic_string<char,struct std::char_traits,class std::allocator > > > > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultHeaders(void)" (?GetOtlpDefaultHeaders@otlp@exporter@v1@opentelemetry@@ya?AV?$multimap@V?$basic_string@DU?$char_traits@D@std@@v?$allocator@D@2@@std@@v12@Ucmp_ic@otlp@exporter@v1@opentelemetry@@v?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@v?$allocator@D@2@@std@@v12@@std@@@2@@std@@xz)
2>C:\xxx\x64\Debug\xxx.exe : fatal error LNK1120: 3 unresolved externals

In dependency walker these are the symbols in the DLL:

1 (0x0001), (0x), int public: static class std::shared_ptr<class opentelemetry::v1::trace::TraceState> __cdecl opentelemetry::v1::trace::TraceState::GetDefault(void)'::2'::$TSS0, 0x001ea974, Microsoft

2 (0x0002), (0x), TSS0<`template-parameter-2',opentelemetry::v1::trace::Provider::tLock,signed char,unsigned char &,void const opentelemetry::v1::common::SpinLockMutex::&,int, ?? &>, 0x001eab04, Microsoft

3 (0x0003), (0x), TSS0<`template-parameter-2',opentelemetry::v1::trace::Provider::tProvider,signed char,unsigned char &,void const std::shared_ptr::&,int, ?? &>, 0x001eaafc, Microsoft

4 (0x0004), (0x), TSS0<`template-parameter-2',opentelemetry::v1::context::RuntimeContext::tStorage,signed char,unsigned char &,void const std::shared_ptr::&,int, ?? &>, 0x001ea924, Microsoft

5 (0x0005), (0x), int private: static bool __cdecl opentelemetry::v1::trace::TraceState::IsValidKeyRegEx(class std::basic_string_view<char,struct std::char_traits<char> >)'::2'::$TSS0, 0x001ea9ec, Microsoft

6 (0x0006), (0x), int private: static bool __cdecl opentelemetry::v1::trace::TraceState::IsValidValueRegEx(class std::basic_string_view<char,struct std::char_traits<char> >)'::2'::$TSS0, 0x001eaacc, Microsoft

7 (0x0007), (0x), int public: virtual class std::shared_ptr<class opentelemetry::v1::trace::Span> __cdecl opentelemetry::v1::trace::NoopTracer::StartSpan(class std::basic_string_view<char,struct std::char_traits<char> >,class opentelemetry::v1::common::KeyValueIterable const & __ptr64,class opentelemetry::v1::trace::SpanContextKeyValueIterable const & __ptr64,struct opentelemetry::v1::trace::StartSpanOptions const & __ptr64) __ptr64'::2'::$TSS0, 0x001eaae4, Microsoft

8 (0x0008), (0x), int private: static bool __cdecl opentelemetry::v1::trace::TraceState::IsValidKeyRegEx(class std::basic_string_view<char,struct std::char_traits<char> >)'::2'::$TSS1, 0x001eaa5c, Microsoft

9 (0x0009), (0x), protected: __cdecl std::enable_shared_from_this::enable_shared_from_this(class std::enable_shared_from_this const & __ptr64) __ptr64, 0x00001cf8, Microsoft

10 (0x000a), (0x), protected: __cdecl std::enable_shared_from_this::enable_shared_from_this(void) __ptr64, 0x00004aac, Microsoft

11 (0x000b), (0x), public: __cdecl opentelemetry::v1::trace::NoopSpan::NoopSpan(class std::shared_ptr const & __ptr64) __ptr64, 0x0000ae20, Microsoft

12 (0x000c), (0x), public: __cdecl opentelemetry::v1::trace::NoopSpan::NoopSpan(class std::shared_ptr const & __ptr64,class std::unique_ptr<class opentelemetry::v1::trace::SpanContext,struct std::default_delete >) __ptr64, 0x00006226, Microsoft

13 (0x000d), (0x), public: __cdecl opentelemetry::v1::trace::NoopTracer::NoopTracer(class opentelemetry::v1::trace::NoopTracer && __ptr64) __ptr64, 0x000030c1, Microsoft

14 (0x000e), (0x), public: __cdecl opentelemetry::v1::trace::NoopTracer::NoopTracer(class opentelemetry::v1::trace::NoopTracer const & __ptr64) __ptr64, 0x0000a8ee, Microsoft

15 (0x000f), (0x), public: __cdecl opentelemetry::v1::trace::NoopTracer::NoopTracer(void) __ptr64, 0x00008a0d, Microsoft

16 (0x0010), (0x), public: __cdecl opentelemetry::v1::trace::NoopTracerProvider::NoopTracerProvider(class
opentelemetry::v1::trace::NoopTracerProvider && __ptr64) __ptr64, 0x00004782, Microsoft

17 (0x0011), (0x), public: __cdecl opentelemetry::v1::trace::NoopTracerProvider::NoopTracerProvider(class opentelemetry::v1::trace::NoopTracerProvider const & __ptr64) __ptr64, 0x00001b68, Microsoft

18 (0x0012), (0x), public: __cdecl opentelemetry::v1::trace::NoopTracerProvider::NoopTracerProvider(void) __ptr64, 0x00006992, Microsoft

19 (0x0013), (0x), public: __cdecl opentelemetry::v1::context::RuntimeContextStorage::RuntimeContextStorage(class opentelemetry::v1::context::RuntimeContextStorage const & __ptr64) __ptr64, 0x000079af, Microsoft

20 (0x0014), (0x), public: __cdecl opentelemetry::v1::context::RuntimeContextStorage::RuntimeContextStorage(void) __ptr64, 0x0000b186, Microsoft

21 (0x0015), (0x), private: __cdecl opentelemetry::v1::trace::TraceState::TraceState(void) __ptr64, 0x000052a9, Microsoft

22 (0x0016), (0x), private: __cdecl opentelemetry::v1::trace::TraceState::TraceState(unsigned __int64) __ptr64, 0x00002cde, Microsoft

23 (0x0017), (0x), public: __cdecl opentelemetry::v1::trace::TraceState::TraceState(class opentelemetry::v1::trace::TraceState && __ptr64) __ptr64, 0x00008d28, Microsoft

24 (0x0018), (0x), public: __cdecl opentelemetry::v1::trace::TracerProvider::TracerProvider(class opentelemetry::v1::trace::TracerProvider const & __ptr64) __ptr64, 0x000065dc, Microsoft

25 (0x0019), (0x), public: __cdecl opentelemetry::v1::trace::TracerProvider::TracerProvider(void) __ptr64, 0x00009fa2, Microsoft

26 (0x001a), (0x), protected: __cdecl std::enable_shared_from_this::~enable_shared_from_this(void) __ptr64,
0x00006d2f, Microsoft

27 (0x001b), (0x), public: virtual __cdecl opentelemetry::v1::trace::NoopSpan::~NoopSpan(void) __ptr64, 0x000015cd, Microsoft

28 (0x001c), (0x), public: virtual __cdecl opentelemetry::v1::trace::NoopTracer::~NoopTracer(void) __ptr64, 0x00003643, Microsoft

29 (0x001d), (0x), public: virtual __cdecl opentelemetry::v1::trace::NoopTracerProvider::~NoopTracerProvider(void) __ptr64, 0x0000a9c5, Microsoft

30 (0x001e), (0x), public: virtual __cdecl opentelemetry::v1::context::RuntimeContextStorage::~RuntimeContextStorage(void) __ptr64, 0x00005cfe, Microsoft

31 (0x001f), (0x), public: __cdecl opentelemetry::v1::trace::TraceState::~TraceState(void) __ptr64, 0x000053a8, Microsoft

32 (0x0020), (0x), public: virtual __cdecl opentelemetry::v1::trace::TracerProvider::~TracerProvider(void) __ptr64, 0x00006280, Microsoft

33 (0x0021), (0x), protected: class std::enable_shared_from_this & __ptr64 __cdecl std::enable_shared_from_this::operator=(class std::enable_shared_from_this const & __ptr64) __ptr64, 0x0000b550, Microsoft

34 (0x0022), (0x), public: class opentelemetry::v1::trace::NoopTracer & __ptr64 __cdecl opentelemetry::v1::trace::NoopTracer::operator=(class opentelemetry::v1::trace::NoopTracer && __ptr64) __ptr64, 0x00003c24, Microsoft

35 (0x0023), (0x), public: class opentelemetry::v1::trace::NoopTracer & __ptr64 __cdecl opentelemetry::v1::trace::NoopTracer::operator=
(class opentelemetry::v1::trace::NoopTracer const & __ptr64) __ptr64, 0x0000330f, Microsoft

36 (0x0024), (0x), public: class opentelemetry::v1::trace::NoopTracerProvider & __ptr64 __cdecl opentelemetry::v1::trace::NoopTracerProvider::operator=(class opentelemetry::v1::trace::NoopTracerProvider && __ptr64) __ptr64, 0x00009813, Microsoft

37 (0x0025), (0x), public: class opentelemetry::v1::trace::NoopTracerProvider & __ptr64 __cdecl opentelemetry::v1::trace::NoopTracerProvider::operator=(class opentelemetry::v1::trace::NoopTracerProvider const & __ptr64) __ptr64,
0x00004994, Microsoft

38 (0x0026), (0x), public: class opentelemetry::v1::trace::Provider & __ptr64 __cdecl opentelemetry::v1::trace::Provider::operator=(class opentelemetry::v1::trace::Provider && __ptr64) __ptr64, 0x0000a6b9, Microsoft

39 (0x0027), (0x), public: class opentelemetry::v1::trace::Provider & __ptr64 __cdecl opentelemetry::v1::trace::Provider::operator=(class opentelemetry::v1::trace::Provider const & __ptr64) __ptr64, 0x000085e4, Microsoft

40 (0x0028), (0x), public: class opentelemetry::v1::context::RuntimeContext & __ptr64 __cdecl opentelemetry::v1::context::RuntimeContext::operator=(class opentelemetry::v1::context::RuntimeContext && __ptr64) __ptr64, 0x000058b7, Microsoft

41 (0x0029), (0x), public: class opentelemetry::v1::context::RuntimeContext & __ptr64 __cdecl opentelemetry::v1::context::RuntimeContext::operator=(class opentelemetry::v1::context::RuntimeContext const & __ptr64) __ptr64, 0x000091dd, Microsoft

42 (0x002a), (0x), public: class opentelemetry::v1::context::RuntimeContextStorage & __ptr64 __cdecl opentelemetry::v1::context::RuntimeContextStorage::operator=(class opentelemetry::v1::context::RuntimeContextStorage const & __ptr64) __ptr64, 0x0000a40c, Microsoft

43 (0x002b), (0x), public: class opentelemetry::v1::trace::TraceState & __ptr64 __cdecl opentelemetry::v1::trace::TraceState::operator=(class opentelemetry::v1::trace::TraceState && __ptr64) __ptr64, 0x00008837, Microsoft

44 (0x002c), (0x), public: class opentelemetry::v1::trace::TracerProvider & __ptr64 __cdecl opentelemetry::v1::trace::TracerProvider::operator=(class opentelemetry::v1::trace::TracerProvider const & __ptr64) __ptr64, 0x00003170, Microsoft

45 (0x002d), (0x), const opentelemetry::v1::trace::NoopSpan::`vftable', 0x0016bdc8, Microsoft

46 (0x002e), (0x), const opentelemetry::v1::trace::NoopTracer::`vftable', 0x0016be40, Microsoft

47 (0x002f), (0x), const opentelemetry::v1::trace::NoopTracerProvider::`vftable', 0x0016be70, Microsoft

48 (0x0030), (0x), const opentelemetry::v1::context::RuntimeContextStorage::`vftable', 0x0016b9a8, Microsoft

49 (0x0031), (0x), const opentelemetry::v1::trace::TracerProvider::`vftable', 0x0016bda8, Microsoft

50 (0x0032), (0x), public: virtual void __cdecl opentelemetry::v1::trace::NoopSpan::AddEvent(class std::basic_string_view<char,struct std::char_traits >) __ptr64, 0x00009aed, Microsoft

51 (0x0033), (0x), public: virtual void __cdecl opentelemetry::v1::trace::NoopSpan::AddEvent(class std::basic_string_view<char,struct std::char_traits >,class opentelemetry::v1::common::KeyValueIterable const & __ptr64) __ptr64, 0x000094b2, Microsoft

52 (0x0034), (0x), public: virtual void __cdecl opentelemetry::v1::trace::NoopSpan::AddEvent(class std::basic_string_view<char,struct std::char_traits >,class opentelemetry::v1::common::SystemTimestamp) __ptr64, 0x000074f5, Microsoft

53 (0x0035), (0x), public: virtual void __cdecl opentelemetry::v1::trace::NoopSpan::AddEvent(class std::basic_string_view<char,struct std::char_traits >,class opentelemetry::v1::common::SystemTimestamp,class opentelemetry::v1::common::KeyValueIterable const & __ptr64) __ptr64, 0x00003d46, Microsoft

54 (0x0036), (0x), public: static class std::unique_ptr<class opentelemetry::v1::context::Token,struct std::default_delete > __cdecl opentelemetry::v1::context::RuntimeContext::Attach(class opentelemetry::v1::context::Context const & __ptr64), 0x0000933b, Microsoft

55 (0x0037), (0x), public: virtual void __cdecl opentelemetry::v1::trace::NoopTracer::CloseWithMicroseconds(unsigned __int64) __ptr64, 0x00004188, Microsoft

56 (0x0038), (0x), public: static class std::unique_ptr<class opentelemetry::v1::sdk::trace::SpanExporter,struct std::default_delete > __cdecl opentelemetry::v1::exporter::trace::OStreamSpanExporterFactory::Create(void), 0x00004fcf, Microsoft

57 (0x0039), (0x), public: static class std::unique_ptr<class opentelemetry::v1::sdk::trace::SpanExporter,struct std::default_delete > __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpExporterFactory::Create(struct opentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions const & __ptr64), 0x00006e60, Microsoft

58 (0x003a), (0x), public: static class std::unique_ptr<class opentelemetry::v1::sdk::trace::SpanProcessor,struct std::default_delete > __cdecl opentelemetry::v1::sdk::trace::SimpleSpanProcessorFactory::Create(class std::unique_ptr<class opentelemetry::v1::sdk::trace::SpanExporter,struct std::default_delete > && __ptr64), 0x000088f0, Microsoft

59 (0x003b), (0x), public: static class std::unique_ptr<class opentelemetry::v1::trace::TracerProvider,struct std::default_delete > __cdecl opentelemetry::v1::sdk::trace::TracerProviderFactory::Create(class std::unique_ptr<class opentelemetry::v1::sdk::trace::SpanProcessor,struct std::default_delete >), 0x000019d3, Microsoft

60 (0x003c), (0x), protected: class std::unique_ptr<class opentelemetry::v1::context::Token,struct std::default_delete > __cdecl opentelemetry::v1::context::RuntimeContextStorage::CreateToken(class opentelemetry::v1::context::Context const & __ptr64) __ptr64, 0x000043ef, Microsoft

61 (0x003d), (0x), public: class std::shared_ptr __cdecl opentelemetry::v1::trace::TraceState::Delete(class std::basic_string_view<char,struct std::char_traits > const & __ptr64) __ptr64, 0x0000777f, Microsoft

62 (0x003e), (0x), public: static bool __cdecl opentelemetry::v1::context::RuntimeContext::Detach(class opentelemetry::v1::context::Token & __ptr64), 0x00001e10, Microsoft

63 (0x003f), (0x), public: bool __cdecl opentelemetry::v1::trace::TraceState::Empty(void)const __ptr64, 0x00009e62, Microsoft

64 (0x0040), (0x), public: virtual void __cdecl opentelemetry::v1::trace::NoopSpan::End(struct opentelemetry::v1::trace::EndSpanOptions const & __ptr64) __ptr64, 0x00009d68, Microsoft

65 (0x0041), (0x), public: virtual void __cdecl opentelemetry::v1::trace::NoopTracer::ForceFlushWithMicroseconds(unsigned __int64) __ptr64, 0x00001753, Microsoft

66 (0x0042), (0x), public: static class std::shared_ptr __cdecl opentelemetry::v1::trace::TraceState::FromHeader(class std::basic_string_view<char,struct std::char_traits >), 0x000035b7, Microsoft

67 (0x0043), (0x), public: bool __cdecl opentelemetry::v1::trace::TraceState::Get(class std::basic_string_view<char,struct std::char_traits >,class std::basic_string<char,struct std::char_traits,class std::allocator > & __ptr64)const __ptr64, 0x000022b6, Microsoft

68 (0x0044), (0x), public: bool __cdecl opentelemetry::v1::trace::TraceState::GetAllEntries(class opentelemetry::v1::nostd::function_ref<bool __cdecl(class std::basic_string_view<char,struct std::char_traits >,class std::basic_string_view<char,struct std::char_traits >)>)const __ptr64, 0x00007f2c, Microsoft

69 (0x0045), (0x), public: static class std::shared_ptr __cdecl opentelemetry::v1::context::RuntimeContext::GetConstRuntimeContextStorage(void), 0x00006c67, Microsoft

70 (0x0046), (0x), public: virtual class opentelemetry::v1::trace::SpanContext __cdecl opentelemetry::v1::trace::NoopSpan::GetContext(void)const __ptr64, 0x000077ac, Microsoft

71 (0x0047), (0x), public: static class opentelemetry::v1::context::Context __cdecl opentelemetry::v1::context::RuntimeContext::GetCurrent(void), 0x00006ff0, Microsoft

72 (0x0048), (0x), public: static class std::shared_ptr __cdecl opentelemetry::v1::trace::TraceState::GetDefault(void), 0x0000a817, Microsoft

73 (0x0049), (0x), private: static class opentelemetry::v1::common::SpinLockMutex & __ptr64 __cdecl opentelemetry::v1::trace::Provider::GetLock(void), 0x000094ad, Microsoft

74 (0x004a), (0x), private: static class std::shared_ptr & __ptr64 __cdecl opentelemetry::v1::trace::Provider::GetProvider(void), 0x00001c94, Microsoft

75 (0x004b), (0x), private: static class std::shared_ptr __cdecl opentelemetry::v1::context::RuntimeContext::GetRuntimeContextStorage(void), 0x00004e49, Microsoft

76 (0x004c), (0x), private: static class std::shared_ptr & __ptr64 __cdecl opentelemetry::v1::context::RuntimeContext::GetStorage(void), 0x0000b36b, Microsoft

77 (0x004d), (0x), public: virtual class std::shared_ptr __cdecl opentelemetry::v1::trace::NoopTracerProvider::GetTracer(class std::basic_string_view<char,struct std::char_traits >,class
std::basic_string_view<char,struct std::char_traits >,class std::basic_string_view<char,struct std::char_traits >) __ptr64, 0x00004511, Microsoft

78 (0x004e), (0x), public: static class std::shared_ptr __cdecl opentelemetry::v1::trace::Provider::GetTracerProvider(void), 0x00005ac4, Microsoft

79 (0x004f), (0x), public: static class std::variant<struct std::monostate,bool,__int64,unsigned __int64,double,class std::shared_ptr,class std::shared_ptr,class std::shared_ptr > __cdecl opentelemetry::v1::context::RuntimeContext::GetValue(class std::basic_string_view<char,struct std::char_traits >,class opentelemetry::v1::context::Context * __ptr64), 0x00001280, Microsoft

80 (0x0050), (0x), private: static bool __cdecl opentelemetry::v1::trace::TraceState::IsLowerCaseAlphaOrDigit(char), 0x00008738, Microsoft

81 (0x0051), (0x), public: virtual bool __cdecl opentelemetry::v1::trace::NoopSpan::IsRecording(void)const __ptr64, 0x00009d1d, Microsoft

82 (0x0052), (0x), public: static bool __cdecl opentelemetry::v1::trace::TraceState::IsValidKey(class std::basic_string_view<char,struct std::char_traits >), 0x0000426e, Microsoft

83 (0x0053), (0x), private: static bool __cdecl opentelemetry::v1::trace::TraceState::IsValidKeyNonRegEx(class std::basic_string_view<char,struct std::char_traits >), 0x000074e1, Microsoft

84 (0x0054), (0x), private: static bool __cdecl opentelemetry::v1::trace::TraceState::IsValidKeyRegEx(class
std::basic_string_view<char,struct std::char_traits >), 0x000056b9, Microsoft

85 (0x0055), (0x), public: static bool __cdecl opentelemetry::v1::trace::TraceState::IsValidValue(class std::basic_string_view<char,struct std::char_traits >), 0x0000772a, Microsoft

86 (0x0056), (0x), private: static bool __cdecl opentelemetry::v1::trace::TraceState::IsValidValueNonRegEx(class std::basic_string_view<char,struct std::char_traits >), 0x00004a7f, Microsoft

87 (0x0057), (0x), private: static bool __cdecl opentelemetry::v1::trace::TraceState::IsValidValueRegEx(class std::basic_string_view<char,struct std::char_traits >), 0x0000614a, Microsoft

88 (0x0058), (0x), public: class std::shared_ptr __cdecl opentelemetry::v1::trace::TraceState::Set(class std::basic_string_view<char,struct std::char_traits > const & __ptr64,class std::basic_string_view<char,struct std::char_traits > const & __ptr64) __ptr64, 0x00009d40, Microsoft

89 (0x0059), (0x), public: virtual void __cdecl opentelemetry::v1::trace::NoopSpan::SetAttribute(class std::basic_string_view<char,struct std::char_traits >,class std::variant<bool,int,__int64,unsigned int,double,char const * __ptr64,class std::basic_string_view<char,struct std::char_traits >,class std::span<bool const ,-1>,class std::span<int const ,-1>,class std::span<__int64 const ,-1>,class std::span<unsigned int const ,-1>,class std::span<double const ,-1>,class std::span<class std::basic_string_view<char,struct std::char_traits > const ,-1>,unsigned __int64,class std::span<unsigned __int64 const ,-1>,class std::span<unsigned char const ,-1> > const & __ptr64) __ptr64, 0x0000a6d2, Microsoft

90 (0x005a), (0x), public: static void __cdecl opentelemetry::v1::context::RuntimeContext::SetRuntimeContextStorage(class std::shared_ptr), 0x000020e5, Microsoft

91 (0x005b), (0x), public: virtual void __cdecl opentelemetry::v1::trace::NoopSpan::SetStatus(enum opentelemetry::v1::trace::StatusCode,class std::basic_string_view<char,struct std::char_traits >) __ptr64, 0x0000687f, Microsoft

92 (0x005c), (0x), public: static void __cdecl opentelemetry::v1::trace::Provider::SetTracerProvider(class std::shared_ptr), 0x000064fb, Microsoft

93 (0x005d), (0x), public: static class opentelemetry::v1::context::Context __cdecl opentelemetry::v1::context::RuntimeContext::SetValue(class std::basic_string_view<char,struct std::char_traits >,class std::variant<struct std::monostate,bool,__int64,unsigned __int64,double,class std::shared_ptr,class std::shared_ptr,class std::shared_ptr > const & __ptr64,class opentelemetry::v1::context::Context * __ptr64), 0x00005867, Microsoft

94 (0x005e), (0x), public: virtual class std::shared_ptr __cdecl opentelemetry::v1::trace::NoopTracer::StartSpan(class std::basic_string_view<char,struct std::char_traits >,class opentelemetry::v1::common::KeyValueIterable const & __ptr64,class opentelemetry::v1::trace::SpanContextKeyValueIterable const & __ptr64,struct opentelemetry::v1::trace::StartSpanOptions const & __ptr64) __ptr64, 0x00005dc1, Microsoft

95 (0x005f), (0x), public: class std::basic_string<char,struct std::char_traits,class std::allocator > __cdecl opentelemetry::v1::trace::TraceState::ToHeader(void)const __ptr64, 0x000017d5, Microsoft

96 (0x0060), (0x), private: static class std::basic_string_view<char,struct std::char_traits > __cdecl opentelemetry::v1::trace::TraceState::TrimString(class std::basic_string_view<char,struct std::char_traits >,unsigned __int64,unsigned __int64), 0x0000528b, Microsoft

97 (0x0061), (0x), public: virtual void __cdecl opentelemetry::v1::trace::NoopSpan::UpdateName(class std::basic_string_view<char,struct std::char_traits >) __ptr64, 0x00005880, Microsoft

98 (0x0062), (0x), class std::shared_ptr private: static class std::shared_ptr<class opentelemetry::v1::context::RuntimeContextStorage> & __ptr64 __cdecl opentelemetry::v1::context::RuntimeContext::GetStorage(void)'::2'::context, 0x001ea910, Microsoft

99 (0x0063), (0x), public: static int const opentelemetry::v1::trace::TraceState::kKeyMaxSize, 0x00166f64, Microsoft

100 (0x0064), (0x), public: static char const opentelemetry::v1::trace::TraceState::kKeyValueSeparator, 0x00166f70, Microsoft

101 (0x0065), (0x), public: static int const opentelemetry::v1::trace::TraceState::kMaxKeyValuePairs, 0x00166f6c, Microsoft

102 (0x0066), (0x), public: static char const opentelemetry::v1::trace::TraceState::kMembersSeparator, 0x00166f71, Microsoft

103 (0x0067), (0x), public: static int const opentelemetry::v1::trace::TraceState::kValueMaxSize, 0x00166f68, Microsoft

104 (0x0068), (0x), class opentelemetry::v1::common::SpinLockMutex private: static class opentelemetry::v1::common::SpinLockMutex & __ptr64 __cdecl opentelemetry::v1::trace::Provider::GetLock(void)'::2'::lock, 0x001eab00, Microsoft

105 (0x0069), (0x), class std::shared_ptr public: virtual class std::shared_ptr<class opentelemetry::v1::trace::Span> __cdecl opentelemetry::v1::trace::NoopTracer::StartSpan(class std::basic_string_view<char,struct std::char_traits<char> >,class opentelemetry::v1::common::KeyValueIterable const & __ptr64,class opentelemetry::v1::trace::SpanContextKeyValueIterable const & __ptr64,struct opentelemetry::v1::trace::StartSpanOptions const & __ptr64) __ptr64'::2'::noop_span, 0x001eaad0, Microsoft

106 (0x006a), (0x), class std::shared_ptr private: static class std::shared_ptr<class opentelemetry::v1::trace::TracerProvider> & __ptr64 __cdecl opentelemetry::v1::trace::Provider::GetProvider(void)'::2'::provider, 0x001eaae8, Microsoft

107 (0x006b), (0x), class std::basic_regex<char,class std::regex_traits > private: static bool __cdecl opentelemetry::v1::trace::TraceState::IsValidKeyRegEx(class std::basic_string_view<char,struct std::char_traits<char> >)'::2'::reg_key, 0x001ea980, Microsoft

108 (0x006c), (0x), class std::basic_regex<char,class std::regex_traits > private: static bool __cdecl opentelemetry::v1::trace::TraceState::IsValidKeyRegEx(class std::basic_string_view<char,struct std::char_traits<char> >)'::2'::reg_key_multitenant, 0x001ea9f0, Microsoft

109 (0x006d), (0x), class std::basic_regex<char,class std::regex_traits > private: static bool __cdecl opentelemetry::v1::trace::TraceState::IsValidValueRegEx(class std::basic_string_view<char,struct std::char_traits<char> >)'::2'::reg_value, 0x001eaa60, Microsoft

110 (0x006e), (0x), public: class std::shared_ptr __cdecl std::enable_shared_from_this::shared_from_this(void) __ptr64, 0x00003b39, Microsoft

111 (0x006f), (0x), public: class std::shared_ptr __cdecl std::enable_shared_from_this::shared_from_this(void)const __ptr64, 0x00003440, Microsoft

112 (0x0070), (0x), class std::shared_ptr public: static class std::shared_ptr<class opentelemetry::v1::trace::TraceState> __cdecl opentelemetry::v1::trace::TraceState::GetDefault(void)'::2'::ts, 0x001ea960, Microsoft

113 (0x0071), (0x), public: class std::weak_ptr __cdecl std::enable_shared_from_this::weak_from_this(void) __ptr64, 0x00005600, Microsoft

114 (0x0072), (0x), public: class std::weak_ptr __cdecl std::enable_shared_from_this::weak_from_this(void)const __ptr64, 0x000088a5, Microsoft

Additional context
The built dll is about 2mb. If i've forgotten to add something to the issue let me know and i will add it.

@Dangeroustuber Dangeroustuber added the bug Something isn't working label Jun 27, 2023
@marcalff marcalff changed the title [BUILD] Compilation failure using x64 Windows DLL [BUILD] Link failure using x64 Windows DLL Jun 27, 2023
@marcalff
Copy link
Member

Thanks for the report.

Analysis:

GetOtlpDefaultHttpTracesEndpoint() and friends are not exported.

Instead or exporting the entire implementation, a better fix would be to:

  • move the OtlpHttpExporterOptions constructor from the header to the .cc file, hiding all the implementation details (subject to change)
  • only export the OtlpHttpExporterOptions constructor.

Likewise for every option struct.

@marcalff
Copy link
Member

Related to:

which is a pre requisite to deliver shared libraries.

@github-actions
Copy link

This issue was marked as stale due to lack of activity.

@github-actions github-actions bot added the Stale label Aug 27, 2023
@ThomsonTan ThomsonTan removed the Stale label Sep 6, 2023
@Dangeroustuber
Copy link
Author

@marcalff Hello i gave building this another go since seeing that some work is being done (045be9c).

Unfortunately it gets a linking error at the very end when it's making the dll (i think).

I'm building it with ninja this time instead of visual studio/msbuild.

Environment
Using main branch
x64 Windows 10
building with ninja
cpp compiler MSVC 19.37.32824.0

Steps to reproduce

  • clone opentelemetry-cpp with recursive command

  • create a build folder inside of the opentelemetry-cpp folder

  • Open a x64 native tools prompt for vs2022 terminal in the build folder

  • run the following cmake command (note: also tried without "-DWITH_ABI_VERSION=1" option):

cmake -G Ninja .. -DBUILD_TESTING=OFF -DOPENTELEMETRY_BUILD_DLL=ON -DOPENTELEMETRY_INSTALL=ON -DWITH_STL=ON -DWITH_OTLP_HTTP=ON -DWITH_FUNC_TESTS=OFF -DWITH_EXAMPLES_HTTP=OFF -DWITH_EXAMPLES=OFF -DWITH_ETW=OFF -DWITH_ELASTICSEARCH=OFF -DWITH_BENCHMARK=OFF -DWITH_ABI_VERSION=1 -DCMAKE_CXX_STANDARD=23
  • after this has configured the cmake you run ninja to build. This is where the error happends at the very end.

my terminal output

**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.7.4
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

C:\Program Files\Microsoft Visual Studio\2022\Enterprise>cd C:\dev\otel-test3\opentelemetry-cpp

C:\dev\otel-test3\opentelemetry-cpp>mkdir build

C:\dev\otel-test3\opentelemetry-cpp>cd build

C:\dev\otel-test3\opentelemetry-cpp\build>cmake -G Ninja .. -DBUILD_TESTING=OFF -DOPENTELEMETRY_BUILD_DLL=ON -DOPENTELEMETRY_INSTALL=ON -DWITH_STL=ON -DWITH_OTLP_HTTP=ON -DWITH_FUNC_TESTS=OFF -DWITH_EXAMPLES_HTTP=OFF -DWITH_EXAMPLES=OFF -DWITH_ETW=OFF -DWITH_ELASTICSEARCH=OFF -DWITH_BENCHMARK=OFF -DWITH_ABI_VERSION=1 -DCMAKE_CXX_STANDARD=23
-- The C compiler identification is MSVC 19.37.32824.0
-- The CXX compiler identification is MSVC 19.37.32824.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.37.32822/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.37.32822/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Building for architecture ARCH=x64
-- OPENTELEMETRY_ABI_VERSION_NO=1
-- OPENTELEMETRY_VERSION=1.12.0
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - not found
-- Found Threads: TRUE
-- Could NOT find Protobuf (missing: Protobuf_LIBRARIES Protobuf_INCLUDE_DIR)
Installing build tools and dependencies...

C:\dev\otel-test3\opentelemetry-cpp\build>REM Copyright The OpenTelemetry Authors

C:\dev\otel-test3\opentelemetry-cpp\build>REM SPDX-License-Identifier: Apache-2.0
Running without Administrative privilege...
Building with vs2022 Enterprise...
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.7.4
** Copyright (c) 2022 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
Downloading https://github.com/microsoft/vcpkg-tool/releases/download/2022-07-21/vcpkg.exe -> C:\dev\otel-test3\opentelemetry-cpp\tools\vcpkg\vcpkg.exe... done.
Validating signature... done.

Telemetry
---------
vcpkg collects usage data in order to help us improve your experience.
The data collected by Microsoft is anonymous.
You can opt-out of telemetry by re-running the bootstrap-vcpkg script with -disableMetrics,
passing --disable-metrics to vcpkg on the command line,
or by setting the VCPKG_DISABLE_METRICS environment variable.

Read more about vcpkg telemetry at docs/about/privacy.md
Computing installation plan...
The following packages will be built and installed:
    gtest[core]:x64-windows -> 1.12.1
  * vcpkg-cmake[core]:x64-windows -> 2022-07-18
  * vcpkg-cmake-config[core]:x64-windows -> 2022-02-06#1
Additional packages (*) will be modified to complete this operation.
Detecting compiler hash for triplet x64-windows...
A suitable version of 7zip was not found (required v21.7.0). Downloading portable 7zip v21.7.0...
Downloading 7zip...
  https://www.7-zip.org/a/7z2107-extra.7z -> C:\dev\otel-test3\opentelemetry-cpp\tools\vcpkg\downloads\7z2107-extra.7z
Extracting 7zip...
Restored 3 package(s) from C:\Users\elvari\AppData\Local\vcpkg\archives in 1.48 s. Use --debug to see more details.
Installing 1/3 vcpkg-cmake:x64-windows...
Elapsed time to handle vcpkg-cmake:x64-windows: 13.82 ms
Installing 2/3 vcpkg-cmake-config:x64-windows...
Elapsed time to handle vcpkg-cmake-config:x64-windows: 17.19 ms
Installing 3/3 gtest:x64-windows...
Elapsed time to handle gtest:x64-windows: 103.1 ms

Total elapsed time: 5.065 s

gtest provides CMake targets:
    # this is heuristically generated, and may not be correct
    find_package(GTest CONFIG REQUIRED)
    target_link_libraries(main PRIVATE GTest::gmock GTest::gtest GTest::gmock_main GTest::gtest_main)

Computing installation plan...
The following packages will be built and installed:
    benchmark[core]:x64-windows -> 1.5.3 -- C:\dev\otel-test3\opentelemetry-cpp\tools\ports\benchmark
Detecting compiler hash for triplet x64-windows...
Restored 1 package(s) from C:\Users\elvari\AppData\Local\vcpkg\archives in 232.2 ms. Use --debug to see more details.
Installing 1/1 benchmark:x64-windows...
Elapsed time to handle benchmark:x64-windows: 29.78 ms

Total elapsed time: 3.099 s

benchmark provides CMake targets:
    # this is heuristically generated, and may not be correct
    find_package(benchmark CONFIG REQUIRED)
    target_link_libraries(main PRIVATE benchmark::benchmark benchmark::benchmark_main)

Computing installation plan...
The following packages will be built and installed:
    protobuf[core]:x64-windows -> 3.15.8#2 -- C:\dev\otel-test3\opentelemetry-cpp\tools\ports\protobuf
Detecting compiler hash for triplet x64-windows...
Restored 1 package(s) from C:\Users\elvari\AppData\Local\vcpkg\archives in 1.22 s. Use --debug to see more details.
Installing 1/1 protobuf:x64-windows...
Elapsed time to handle protobuf:x64-windows: 180.4 ms

Total elapsed time: 4.143 s

protobuf provides CMake targets:
    # this is heuristically generated, and may not be correct
    find_package(protobuf CONFIG REQUIRED)
    target_link_libraries(main PRIVATE protobuf::libprotoc protobuf::libprotobuf protobuf::libprotobuf-lite)

Computing installation plan...
The following packages will be built and installed:
    ms-gsl[core]:x64-windows -> 4.0.0
Detecting compiler hash for triplet x64-windows...
Restored 1 package(s) from C:\Users\elvari\AppData\Local\vcpkg\archives in 60.23 ms. Use --debug to see more details.
Installing 1/1 ms-gsl:x64-windows...
Elapsed time to handle ms-gsl:x64-windows: 19.39 ms

Total elapsed time: 2.849 s

ms-gsl provides CMake targets:
    # this is heuristically generated, and may not be correct
    find_package(Microsoft.GSL CONFIG REQUIRED)
    target_link_libraries(main PRIVATE Microsoft.GSL::GSL)

Computing installation plan...
The following packages will be built and installed:
    nlohmann-json[core]:x64-windows -> 3.11.2
Detecting compiler hash for triplet x64-windows...
Restored 1 package(s) from C:\Users\elvari\AppData\Local\vcpkg\archives in 113 ms. Use --debug to see more details.
Installing 1/1 nlohmann-json:x64-windows...
Elapsed time to handle nlohmann-json:x64-windows: 43.2 ms

Total elapsed time: 2.848 s

The package nlohmann-json provides CMake targets:

    find_package(nlohmann_json CONFIG REQUIRED)
    target_link_libraries(main PRIVATE nlohmann_json::nlohmann_json)

The package nlohmann-json can be configured to not provide implicit conversions via a custom triplet file:

    set(nlohmann-json_IMPLICIT_CONVERSIONS OFF)

For more information, see the docs here:

    https://json.nlohmann.me/api/macros/json_use_implicit_conversions/

Computing installation plan...
The following packages will be built and installed:
    abseil[core]:x64-windows -> 20211102.1
Detecting compiler hash for triplet x64-windows...
Restored 1 package(s) from C:\Users\elvari\AppData\Local\vcpkg\archives in 861.1 ms. Use --debug to see more details.
Installing 1/1 abseil:x64-windows...
Elapsed time to handle abseil:x64-windows: 252.3 ms

Total elapsed time: 4.064 s

abseil provides CMake targets:
    # this is heuristically generated, and may not be correct
    find_package(absl CONFIG REQUIRED)
    # note: 134 additional targets are not displayed.
    target_link_libraries(main PRIVATE absl::any absl::base absl::bits absl::city)

Computing installation plan...
The following packages will be built and installed:
  * c-ares[core]:x64-windows -> 1.18.1#1
    grpc[codegen,core]:x64-windows -> 1.48.0#1
  * openssl[core]:x64-windows -> 3.0.5#4
  * re2[core]:x64-windows -> 2021-11-01
  * upb[codegen,core]:x64-windows -> 2022-04-04
  * vcpkg-cmake-get-vars[core]:x64-windows -> 2022-05-10#1
  * zlib[core]:x64-windows -> 1.2.12#1
Additional packages (*) will be modified to complete this operation.
Detecting compiler hash for triplet x64-windows...
Restored 7 package(s) from C:\Users\elvari\AppData\Local\vcpkg\archives in 11.12 s. Use --debug to see more details.
Installing 1/7 c-ares:x64-windows...
Elapsed time to handle c-ares:x64-windows: 27.89 ms
Installing 2/7 vcpkg-cmake-get-vars:x64-windows...
Elapsed time to handle vcpkg-cmake-get-vars:x64-windows: 19.22 ms
Installing 3/7 openssl:x64-windows...
Elapsed time to handle openssl:x64-windows: 158.8 ms
Installing 4/7 re2:x64-windows...
Elapsed time to handle re2:x64-windows: 37.01 ms
Installing 5/7 upb:x64-windows...
Elapsed time to handle upb:x64-windows: 61.43 ms
Installing 6/7 zlib:x64-windows...
Elapsed time to handle zlib:x64-windows: 29.09 ms
Installing 7/7 grpc:x64-windows...
Elapsed time to handle grpc:x64-windows: 1.524 s

Total elapsed time: 16.17 s

grpc provides CMake targets:
    # this is heuristically generated, and may not be correct
    find_package(gRPC CONFIG REQUIRED)
    # note: 7 additional targets are not displayed.
    target_link_libraries(main PRIVATE gRPC::gpr gRPC::grpc gRPC::grpc++ gRPC::grpc++_alts)

    find_package(modules CONFIG REQUIRED)
    target_link_libraries(main PRIVATE re2::re2 c-ares::cares)

Computing installation plan...
The following packages will be built and installed:
  * civetweb[core]:x64-windows -> 1.15#1
    prometheus-cpp[compression,core,pull]:x64-windows -> 1.0.1
Additional packages (*) will be modified to complete this operation.
Detecting compiler hash for triplet x64-windows...
Restored 2 package(s) from C:\Users\elvari\AppData\Local\vcpkg\archives in 232.1 ms. Use --debug to see more details.
Installing 1/2 civetweb:x64-windows...
Elapsed time to handle civetweb:x64-windows: 19.8 ms
Installing 2/2 prometheus-cpp:x64-windows...
Elapsed time to handle prometheus-cpp:x64-windows: 51.73 ms

Total elapsed time: 3.435 s

prometheus-cpp provides CMake targets:
    # this is heuristically generated, and may not be correct
    find_package(prometheus-cpp CONFIG REQUIRED)
    target_link_libraries(main PRIVATE prometheus-cpp::core prometheus-cpp::pull)

Computing installation plan...
The following packages will be built and installed:
    curl[core,non-http,schannel,ssl,sspi]:x64-windows -> 7.84.0#1
Detecting compiler hash for triplet x64-windows...
Restored 1 package(s) from C:\Users\elvari\AppData\Local\vcpkg\archives in 140.5 ms. Use --debug to see more details.
Installing 1/1 curl:x64-windows...
Elapsed time to handle curl:x64-windows: 43.86 ms

Total elapsed time: 3.253 s

curl provides CMake targets:
    # this is heuristically generated, and may not be correct
    find_package(CURL CONFIG REQUIRED)
    target_link_libraries(main PRIVATE CURL::libcurl)

Computing installation plan...
The following packages will be built and installed:
  * boost-algorithm[core]:x64-windows -> 1.79.0
  * boost-align[core]:x64-windows -> 1.79.0
  * boost-array[core]:x64-windows -> 1.79.0
  * boost-assert[core]:x64-windows -> 1.79.0
  * boost-atomic[core]:x64-windows -> 1.79.0
  * boost-bind[core]:x64-windows -> 1.79.0
  * boost-build[core]:x64-windows -> 1.79.0#1
  * boost-chrono[core]:x64-windows -> 1.79.0
  * boost-concept-check[core]:x64-windows -> 1.79.0
  * boost-config[core]:x64-windows -> 1.79.0
  * boost-container[core]:x64-windows -> 1.79.0
  * boost-container-hash[core]:x64-windows -> 1.79.0
  * boost-conversion[core]:x64-windows -> 1.79.0
  * boost-core[core]:x64-windows -> 1.79.0
  * boost-date-time[core]:x64-windows -> 1.79.0
  * boost-detail[core]:x64-windows -> 1.79.0
  * boost-exception[core]:x64-windows -> 1.79.0
  * boost-function[core]:x64-windows -> 1.79.0
  * boost-function-types[core]:x64-windows -> 1.79.0
  * boost-fusion[core]:x64-windows -> 1.79.0
  * boost-integer[core]:x64-windows -> 1.79.0
  * boost-intrusive[core]:x64-windows -> 1.79.0
  * boost-io[core]:x64-windows -> 1.79.0
  * boost-iterator[core]:x64-windows -> 1.79.0
  * boost-lexical-cast[core]:x64-windows -> 1.79.0
  * boost-locale[core]:x64-windows -> 1.79.0
  * boost-modular-build-helper[core]:x64-windows -> 1.79.0#8
  * boost-move[core]:x64-windows -> 1.79.0
  * boost-mp11[core]:x64-windows -> 1.79.0
  * boost-mpl[core]:x64-windows -> 1.79.0
  * boost-numeric-conversion[core]:x64-windows -> 1.79.0
  * boost-optional[core]:x64-windows -> 1.79.0
  * boost-predef[core]:x64-windows -> 1.79.0
  * boost-preprocessor[core]:x64-windows -> 1.79.0
  * boost-range[core]:x64-windows -> 1.79.0
  * boost-ratio[core]:x64-windows -> 1.79.0
  * boost-rational[core]:x64-windows -> 1.79.0
  * boost-regex[core]:x64-windows -> 1.79.0#1
  * boost-scope-exit[core]:x64-windows -> 1.79.0
  * boost-smart-ptr[core]:x64-windows -> 1.79.0
  * boost-static-assert[core]:x64-windows -> 1.79.0
  * boost-system[core]:x64-windows -> 1.79.0
  * boost-thread[core]:x64-windows -> 1.79.0
  * boost-throw-exception[core]:x64-windows -> 1.79.0
  * boost-tokenizer[core]:x64-windows -> 1.79.0
  * boost-tuple[core]:x64-windows -> 1.79.0
  * boost-type-index[core]:x64-windows -> 1.79.0
  * boost-type-traits[core]:x64-windows -> 1.79.0
  * boost-typeof[core]:x64-windows -> 1.79.0
  * boost-uninstall[core]:x64-windows -> 1.79.0
  * boost-unordered[core]:x64-windows -> 1.79.0
  * boost-utility[core]:x64-windows -> 1.79.0
  * boost-variant2[core]:x64-windows -> 1.79.0
  * boost-vcpkg-helpers[core]:x64-windows -> 1.79.0
  * boost-winapi[core]:x64-windows -> 1.79.0
  * libevent[core,thread]:x64-windows -> 2.1.12#6
    thrift[core]:x64-windows -> 0.16.0
Additional packages (*) will be modified to complete this operation.
Detecting compiler hash for triplet x64-windows...
Restored 57 package(s) from C:\Users\elvari\AppData\Local\vcpkg\archives in 10.46 s. Use --debug to see more details.
Installing 1/57 boost-uninstall:x64-windows...
Elapsed time to handle boost-uninstall:x64-windows: 16.71 ms
Installing 2/57 boost-vcpkg-helpers:x64-windows...
Elapsed time to handle boost-vcpkg-helpers:x64-windows: 36.59 ms
Installing 3/57 boost-config:x64-windows...
Elapsed time to handle boost-config:x64-windows: 282.8 ms
Installing 4/57 boost-assert:x64-windows...
Elapsed time to handle boost-assert:x64-windows: 37.2 ms
Installing 5/57 boost-static-assert:x64-windows...
Elapsed time to handle boost-static-assert:x64-windows: 34.84 ms
Installing 6/57 boost-throw-exception:x64-windows...
Elapsed time to handle boost-throw-exception:x64-windows: 34.61 ms
Installing 7/57 boost-core:x64-windows...
Elapsed time to handle boost-core:x64-windows: 82.35 ms
Installing 8/57 boost-array:x64-windows...
Elapsed time to handle boost-array:x64-windows: 36.6 ms
Installing 9/57 boost-bind:x64-windows...
Elapsed time to handle boost-bind:x64-windows: 52.92 ms
Installing 10/57 boost-preprocessor:x64-windows...
Elapsed time to handle boost-preprocessor:x64-windows: 382.7 ms
Installing 11/57 boost-type-traits:x64-windows...
Elapsed time to handle boost-type-traits:x64-windows: 169.9 ms
Installing 12/57 boost-concept-check:x64-windows...
Elapsed time to handle boost-concept-check:x64-windows: 36.11 ms
Installing 13/57 boost-build:x64-windows...
Elapsed time to handle boost-build:x64-windows: 813.8 ms
Installing 14/57 boost-modular-build-helper:x64-windows...
Elapsed time to handle boost-modular-build-helper:x64-windows: 26.01 ms
Installing 15/57 boost-predef:x64-windows...
Elapsed time to handle boost-predef:x64-windows: 142.4 ms
Installing 16/57 boost-winapi:x64-windows...
Elapsed time to handle boost-winapi:x64-windows: 106.5 ms
Installing 17/57 boost-move:x64-windows...
Elapsed time to handle boost-move:x64-windows: 54.66 ms
Installing 18/57 boost-smart-ptr:x64-windows...
Elapsed time to handle boost-smart-ptr:x64-windows: 90.42 ms
Installing 19/57 boost-tuple:x64-windows...
Elapsed time to handle boost-tuple:x64-windows: 26.75 ms
Installing 20/57 boost-exception:x64-windows...
Elapsed time to handle boost-exception:x64-windows: 43.11 ms
Installing 21/57 boost-integer:x64-windows...
Elapsed time to handle boost-integer:x64-windows: 30.96 ms
Installing 22/57 boost-detail:x64-windows...
Elapsed time to handle boost-detail:x64-windows: 40.58 ms
Installing 23/57 boost-container-hash:x64-windows...
Elapsed time to handle boost-container-hash:x64-windows: 33.97 ms
Installing 24/57 boost-type-index:x64-windows...
Elapsed time to handle boost-type-index:x64-windows: 42.21 ms
Installing 25/57 boost-typeof:x64-windows...
Elapsed time to handle boost-typeof:x64-windows: 66.7 ms
Installing 26/57 boost-function:x64-windows...
Elapsed time to handle boost-function:x64-windows: 38.6 ms
Installing 27/57 boost-conversion:x64-windows...
Elapsed time to handle boost-conversion:x64-windows: 25.4 ms
Installing 28/57 boost-io:x64-windows...
Elapsed time to handle boost-io:x64-windows: 30.32 ms
Installing 29/57 boost-utility:x64-windows...
Elapsed time to handle boost-utility:x64-windows: 40.51 ms
Installing 30/57 boost-mpl:x64-windows...
Elapsed time to handle boost-mpl:x64-windows: 791.6 ms
Installing 31/57 boost-function-types:x64-windows...
Elapsed time to handle boost-function-types:x64-windows: 92.27 ms
Installing 32/57 boost-fusion:x64-windows...
Elapsed time to handle boost-fusion:x64-windows: 845.2 ms
Installing 33/57 boost-optional:x64-windows...
Elapsed time to handle boost-optional:x64-windows: 39.13 ms
Installing 34/57 boost-iterator:x64-windows...
Elapsed time to handle boost-iterator:x64-windows: 56.7 ms
Installing 35/57 boost-regex:x64-windows...
Elapsed time to handle boost-regex:x64-windows: 110.5 ms
Installing 36/57 boost-range:x64-windows...
Elapsed time to handle boost-range:x64-windows: 149.6 ms
Installing 37/57 boost-unordered:x64-windows...
Elapsed time to handle boost-unordered:x64-windows: 34.96 ms
Installing 38/57 boost-algorithm:x64-windows...
Elapsed time to handle boost-algorithm:x64-windows: 90.73 ms
Installing 39/57 boost-align:x64-windows...
Elapsed time to handle boost-align:x64-windows: 68.03 ms
Installing 40/57 boost-atomic:x64-windows...
Elapsed time to handle boost-atomic:x64-windows: 158.4 ms
Installing 41/57 boost-rational:x64-windows...
Elapsed time to handle boost-rational:x64-windows: 30.24 ms
Installing 42/57 boost-ratio:x64-windows...
Elapsed time to handle boost-ratio:x64-windows: 73.33 ms
Installing 43/57 boost-mp11:x64-windows...
Elapsed time to handle boost-mp11:x64-windows: 47.93 ms
Installing 44/57 boost-variant2:x64-windows...
Elapsed time to handle boost-variant2:x64-windows: 27.7 ms
Installing 45/57 boost-system:x64-windows...
Elapsed time to handle boost-system:x64-windows: 62.14 ms
Installing 46/57 boost-chrono:x64-windows...
Elapsed time to handle boost-chrono:x64-windows: 71.3 ms
Installing 47/57 boost-intrusive:x64-windows...
Elapsed time to handle boost-intrusive:x64-windows: 98.6 ms
Installing 48/57 boost-container:x64-windows...
Elapsed time to handle boost-container:x64-windows: 152.6 ms
Installing 49/57 boost-numeric-conversion:x64-windows...
Elapsed time to handle boost-numeric-conversion:x64-windows: 54.65 ms
Installing 50/57 boost-lexical-cast:x64-windows...
Elapsed time to handle boost-lexical-cast:x64-windows: 38.17 ms
Installing 51/57 boost-tokenizer:x64-windows...
Elapsed time to handle boost-tokenizer:x64-windows: 35.29 ms
Installing 52/57 boost-date-time:x64-windows...
Elapsed time to handle boost-date-time:x64-windows: 112.4 ms
Installing 53/57 boost-thread:x64-windows...
Elapsed time to handle boost-thread:x64-windows: 158.9 ms
Installing 54/57 boost-locale:x64-windows...
Elapsed time to handle boost-locale:x64-windows: 59.15 ms
Installing 55/57 boost-scope-exit:x64-windows...
Elapsed time to handle boost-scope-exit:x64-windows: 27.67 ms
Installing 56/57 libevent:x64-windows...
Elapsed time to handle libevent:x64-windows: 80.04 ms
Installing 57/57 thrift:x64-windows...
Elapsed time to handle thrift:x64-windows: 134.5 ms

Total elapsed time: 21.69 s

thrift provides CMake targets:
    # this is heuristically generated, and may not be correct
    find_package(Thrift CONFIG REQUIRED)
    target_link_libraries(main PRIVATE thrift::thrift thriftz::thriftz thriftnb::thriftnb)

Make sure that vcpkg.cmake is set as the CMAKE_TOOLCHAIN_FILE at the START of the cmake build process!
    Can be command-line arg (cmake -DCMAKE_TOOLCHAIN_FILE=...) or set in your editor of choice.
CMake Warning (dev) at tools/vcpkg/installed/x64-windows/share/protobuf/protobuf-module.cmake:82 (message):
  Variable Protobuf_SRC_ROOT_FOLDER defined, but not used in CONFIG mode
Call Stack (most recent call first):
  tools/vcpkg/installed/x64-windows/share/protobuf/protobuf-config.cmake:151 (include)
  tools/vcpkg/installed/x64-windows/share/protobuf/vcpkg-cmake-wrapper.cmake:16 (_find_package)
  tools/vcpkg/scripts/buildsystems/vcpkg.cmake:780 (include)
  CMakeLists.txt:415 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found Protobuf: C:/dev/otel-test3/opentelemetry-cpp/tools/vcpkg/installed/x64-windows/tools/protobuf/protoc.exe (found version "3.15.8.0")
-- PROTOBUF_PROTOC_EXECUTABLE=C:/dev/otel-test3/opentelemetry-cpp/tools/vcpkg/installed/x64-windows/tools/protobuf/protoc.exe
-- opentelemetry-proto dependency satisfied by: git submodule
-- Found ZLIB: optimized;C:/dev/otel-test3/opentelemetry-cpp/tools/vcpkg/installed/x64-windows/lib/zlib.lib;debug;C:/dev/otel-test3/opentelemetry-cpp/tools/vcpkg/installed/x64-windows/debug/lib/zlibd.lib (found suitable version "1.2.12", minimum required is "1")
-- Found CURL: optimized;C:/dev/otel-test3/opentelemetry-cpp/tools/vcpkg/installed/x64-windows/lib/libcurl.lib;debug;C:/dev/otel-test3/opentelemetry-cpp/tools/vcpkg/installed/x64-windows/debug/lib/libcurl-d.lib;winmm;ws2_32;ZLIB::ZLIB;advapi32;crypt32, version 7.84.0-DEV
-- nlohmann::json dependency satisfied by: package
CMake Warning at CMakeLists.txt:636 (message):
  Build DLL with C++ STL could cause binary incompatibility!


-- Building WITH_STL=ON
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    OPENTELEMETRY_BUILD_DLL
    WITH_ABI_VERSION


-- Build files have been written to: C:/dev/otel-test3/opentelemetry-cpp/build


C:\dev\otel-test3\opentelemetry-cpp\build>ninja
[11/123] Building CXX object sdk\src\trace\CMakeFiles\opentelemetry_trace.dir\samplers\always_on_factory.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[15/123] Building CXX object sdk\src\trace\CMakeFiles\opentelemetry_trace.dir\tracer_provider_factory.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[17/123] Building CXX object sdk\src\trace\CMakeFiles\opentelemetry_trace.dir\tracer_context.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[18/123] Building CXX object sdk\src\trace\CMakeFiles\opentelemetry_trace.dir\tracer_context_factory.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[20/123] Building CXX object sdk\src\trace\CMakeFiles\opentelemetry_trace.dir\tracer.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(30): warning C4275: non dll-interface class 'opentelemetry::v1::trace::Span' used as base for dll-interface class 'opentelemetry::v1::trace::NoopSpan'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/scope.h(16): note: see declaration of 'opentelemetry::v1::trace::Span'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(30): note: see declaration of 'opentelemetry::v1::trace::NoopSpan'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(72): warning C4251: 'opentelemetry::v1::trace::NoopSpan::tracer_': class 'std::shared_ptr<opentelemetry::v1::trace::Tracer>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::NoopSpan'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/shared_ptr.h(17): note: see declaration of 'std::shared_ptr<opentelemetry::v1::trace::Tracer>'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(73): warning C4251: 'opentelemetry::v1::trace::NoopSpan::span_context_': class 'std::unique_ptr<opentelemetry::v1::trace::SpanContext,std::default_delete<opentelemetry::v1::trace::SpanContext>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::NoopSpan'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::trace::SpanContext,std::default_delete<opentelemetry::v1::trace::SpanContext>>'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(79): warning C4275: non dll-interface class 'opentelemetry::v1::trace::Tracer' used as base for dll-interface class 'opentelemetry::v1::trace::NoopTracer'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/tracer_provider.h(16): note: see declaration of 'opentelemetry::v1::trace::Tracer'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(79): note: see declaration of 'opentelemetry::v1::trace::NoopTracer'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(81): warning C4251: 'std::enable_shared_from_this<opentelemetry::v1::trace::NoopTracer>::_Wptr': class 'std::weak_ptr<_Ty>' needs to have dll-interface to be used by clients of class 'std::enable_shared_from_this<opentelemetry::v1::trace::NoopTracer>'
        with
        [
            _Ty=opentelemetry::v1::trace::NoopTracer
        ]
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\memory(3143): note: see declaration of 'std::weak_ptr<_Ty>'
        with
        [
            _Ty=opentelemetry::v1::trace::NoopTracer
        ]
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(130): warning C4251: 'opentelemetry::v1::trace::NoopTracerProvider::tracer_': class 'std::shared_ptr<opentelemetry::v1::trace::Tracer>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::NoopTracerProvider'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/shared_ptr.h(17): note: see declaration of 'std::shared_ptr<opentelemetry::v1::trace::Tracer>'
[21/123] Building CXX object sdk\src\trace\CMakeFiles\opentelemetry_trace.dir\span.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[25/123] Building CXX object sdk\src\trace\CMakeFiles\opentelemetry_trace.dir\simple_processor_factory.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[26/123] Building CXX object sdk\src\trace\CMakeFiles\opentelemetry_trace.dir\tracer_provider.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[27/123] Building CXX object sdk\src\trace\CMakeFiles\opentelemetry_trace.dir\batch_span_processor.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[34/123] Building CXX object sdk\src\trace\CMakeFiles\opentelemetry_trace.dir\samplers\always_off_factory.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[35/123] Building CXX object sdk\src\trace\CMakeFiles\opentelemetry_trace.dir\samplers\parent.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[45/123] Building CXX object sdk\src\metrics\CMakeFiles\opentelemetry_metrics.dir\meter_provider_factory.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
C:\dev\otel-test3\opentelemetry-cpp\sdk\include\opentelemetry/sdk/metrics/meter_provider.h(33): warning C4275: non dll-interface class 'opentelemetry::v1::metrics::MeterProvider' used as base for dll-interface class 'opentelemetry::v1::sdk::metrics::MeterProvider'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/metrics/meter_provider.h(22): note: see declaration of 'opentelemetry::v1::metrics::MeterProvider'
C:\dev\otel-test3\opentelemetry-cpp\sdk\include\opentelemetry/sdk/metrics/meter_provider.h(33): note: see declaration of 'opentelemetry::v1::sdk::metrics::MeterProvider'
C:\dev\otel-test3\opentelemetry-cpp\sdk\include\opentelemetry/sdk/metrics/meter_provider.h(116): warning C4251: 'opentelemetry::v1::sdk::metrics::MeterProvider::context_': class 'std::shared_ptr<_Ty>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::sdk::metrics::MeterProvider'
        with
        [
            _Ty=opentelemetry::v1::sdk::metrics::MeterContext
        ]
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\memory(3135): note: see declaration of 'std::shared_ptr<_Ty>'
        with
        [
            _Ty=opentelemetry::v1::sdk::metrics::MeterContext
        ]
C:\dev\otel-test3\opentelemetry-cpp\sdk\include\opentelemetry/sdk/metrics/meter_provider.h(117): warning C4251: 'opentelemetry::v1::sdk::metrics::MeterProvider::lock_': class 'std::mutex' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::sdk::metrics::MeterProvider'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\mutex(132): note: see declaration of 'std::mutex'
[48/123] Building CXX object sdk\src\metrics\CMakeFiles\opentelemetry_metrics.dir\meter_context.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[49/123] Building CXX object sdk\src\metrics\CMakeFiles\opentelemetry_metrics.dir\meter_provider.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\sdk\include\opentelemetry/sdk/metrics/meter_provider.h(33): warning C4275: non dll-interface class 'opentelemetry::v1::metrics::MeterProvider' used as base for dll-interface class 'opentelemetry::v1::sdk::metrics::MeterProvider'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/metrics/meter_provider.h(22): note: see declaration of 'opentelemetry::v1::metrics::MeterProvider'
C:\dev\otel-test3\opentelemetry-cpp\sdk\include\opentelemetry/sdk/metrics/meter_provider.h(33): note: see declaration of 'opentelemetry::v1::sdk::metrics::MeterProvider'
C:\dev\otel-test3\opentelemetry-cpp\sdk\include\opentelemetry/sdk/metrics/meter_provider.h(116): warning C4251: 'opentelemetry::v1::sdk::metrics::MeterProvider::context_': class 'std::shared_ptr<opentelemetry::v1::sdk::metrics::MeterContext>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::sdk::metrics::MeterProvider'
C:\dev\otel-test3\opentelemetry-cpp\sdk\include\opentelemetry/sdk/metrics/meter_provider.h(116): note: see declaration of 'std::shared_ptr<opentelemetry::v1::sdk::metrics::MeterContext>'
C:\dev\otel-test3\opentelemetry-cpp\sdk\include\opentelemetry/sdk/metrics/meter_provider.h(117): warning C4251: 'opentelemetry::v1::sdk::metrics::MeterProvider::lock_': class 'std::mutex' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::sdk::metrics::MeterProvider'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\mutex(132): note: see declaration of 'std::mutex'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[52/123] Building CXX object sdk\src\metrics\CMakeFiles\opentelemetry_metrics.dir\meter.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[53/123] Building CXX object sdk\src\metrics\CMakeFiles\opentelemetry_metrics.dir\state\metric_collector.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[54/123] Building CXX object sdk\src\metrics\CMakeFiles\opentelemetry_metrics.dir\exemplar\filter.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[55/123] Building CXX object sdk\src\metrics\CMakeFiles\opentelemetry_metrics.dir\state\sync_metric_storage.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[59/123] Building CXX object sdk\src\metrics\CMakeFiles\opentelemetry_metrics.dir\exemplar\reservoir.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[72/123] Building CXX object sdk\src\logs\CMakeFiles\opentelemetry_logs.dir\logger_provider.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[74/123] Building CXX object sdk\src\logs\CMakeFiles\opentelemetry_logs.dir\event_logger_provider.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[76/123] Building CXX object sdk\src\logs\CMakeFiles\opentelemetry_logs.dir\logger.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(30): warning C4275: non dll-interface class 'opentelemetry::v1::trace::Span' used as base for dll-interface class 'opentelemetry::v1::trace::NoopSpan'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/scope.h(16): note: see declaration of 'opentelemetry::v1::trace::Span'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(30): note: see declaration of 'opentelemetry::v1::trace::NoopSpan'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(72): warning C4251: 'opentelemetry::v1::trace::NoopSpan::tracer_': class 'std::shared_ptr<opentelemetry::v1::trace::Tracer>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::NoopSpan'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/shared_ptr.h(17): note: see declaration of 'std::shared_ptr<opentelemetry::v1::trace::Tracer>'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(73): warning C4251: 'opentelemetry::v1::trace::NoopSpan::span_context_': class 'std::unique_ptr<opentelemetry::v1::trace::SpanContext,std::default_delete<opentelemetry::v1::trace::SpanContext>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::NoopSpan'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::trace::SpanContext,std::default_delete<opentelemetry::v1::trace::SpanContext>>'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(79): warning C4275: non dll-interface class 'opentelemetry::v1::trace::Tracer' used as base for dll-interface class 'opentelemetry::v1::trace::NoopTracer'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/tracer_provider.h(16): note: see declaration of 'opentelemetry::v1::trace::Tracer'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(79): note: see declaration of 'opentelemetry::v1::trace::NoopTracer'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(81): warning C4251: 'std::enable_shared_from_this<opentelemetry::v1::trace::NoopTracer>::_Wptr': class 'std::weak_ptr<_Ty>' needs to have dll-interface to be used by clients of class 'std::enable_shared_from_this<opentelemetry::v1::trace::NoopTracer>'
        with
        [
            _Ty=opentelemetry::v1::trace::NoopTracer
        ]
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\memory(3143): note: see declaration of 'std::weak_ptr<_Ty>'
        with
        [
            _Ty=opentelemetry::v1::trace::NoopTracer
        ]
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(130): warning C4251: 'opentelemetry::v1::trace::NoopTracerProvider::tracer_': class 'std::shared_ptr<opentelemetry::v1::trace::Tracer>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::NoopTracerProvider'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/shared_ptr.h(17): note: see declaration of 'std::shared_ptr<opentelemetry::v1::trace::Tracer>'
[77/123] Building CXX object sdk\src\logs\CMakeFiles\opentelemetry_logs.dir\event_logger.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(30): warning C4275: non dll-interface class 'opentelemetry::v1::trace::Span' used as base for dll-interface class 'opentelemetry::v1::trace::NoopSpan'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/scope.h(16): note: see declaration of 'opentelemetry::v1::trace::Span'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(30): note: see declaration of 'opentelemetry::v1::trace::NoopSpan'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(72): warning C4251: 'opentelemetry::v1::trace::NoopSpan::tracer_': class 'std::shared_ptr<opentelemetry::v1::trace::Tracer>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::NoopSpan'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/shared_ptr.h(17): note: see declaration of 'std::shared_ptr<opentelemetry::v1::trace::Tracer>'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(73): warning C4251: 'opentelemetry::v1::trace::NoopSpan::span_context_': class 'std::unique_ptr<opentelemetry::v1::trace::SpanContext,std::default_delete<opentelemetry::v1::trace::SpanContext>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::NoopSpan'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::trace::SpanContext,std::default_delete<opentelemetry::v1::trace::SpanContext>>'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(79): warning C4275: non dll-interface class 'opentelemetry::v1::trace::Tracer' used as base for dll-interface class 'opentelemetry::v1::trace::NoopTracer'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/tracer_provider.h(16): note: see declaration of 'opentelemetry::v1::trace::Tracer'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(79): note: see declaration of 'opentelemetry::v1::trace::NoopTracer'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(81): warning C4251: 'std::enable_shared_from_this<opentelemetry::v1::trace::NoopTracer>::_Wptr': class 'std::weak_ptr<_Ty>' needs to have dll-interface to be used by clients of class 'std::enable_shared_from_this<opentelemetry::v1::trace::NoopTracer>'
        with
        [
            _Ty=opentelemetry::v1::trace::NoopTracer
        ]
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\memory(3143): note: see declaration of 'std::weak_ptr<_Ty>'
        with
        [
            _Ty=opentelemetry::v1::trace::NoopTracer
        ]
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(130): warning C4251: 'opentelemetry::v1::trace::NoopTracerProvider::tracer_': class 'std::shared_ptr<opentelemetry::v1::trace::Tracer>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::NoopTracerProvider'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/shared_ptr.h(17): note: see declaration of 'std::shared_ptr<opentelemetry::v1::trace::Tracer>'
[91/123] Building CXX object ext\src\http\client\curl\CMakeFiles\opentelemetry_http_client_curl.dir\http_operation_curl.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\ext\src\http\client\curl\http_operation_curl.cc(890): warning C4244: 'argument': conversion from '_Rep' to 'long', possible loss of data
        with
        [
            _Rep=__int64
        ]
[94/123] Building CXX object exporters\otlp\CMakeFiles\opentelemetry_otlp_recordable.dir\src\otlp_log_recordable.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[96/123] Building CXX object exporters\otlp\CMakeFiles\opentelemetry_otlp_recordable.dir\src\otlp_recordable.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[97/123] Building CXX object exporters\otlp\CMakeFiles\opentelemetry_otlp_recordable.dir\src\otlp_recordable_utils.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[99/123] Building CXX object exporters\otlp\CMakeFiles\opentelemetry_exporter_otlp_http.dir\src\otlp_http_exporter_factory.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter.h(78): warning C4251: 'opentelemetry::v1::exporter::otlp::OtlpHttpExporter::http_client_': class 'std::unique_ptr<opentelemetry::v1::exporter::otlp::OtlpHttpClient,std::default_delete<opentelemetry::v1::exporter::otlp::OtlpHttpClient>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::exporter::otlp::OtlpHttpExporter'
C:\dev\otel-test3\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter.h(78): note: see declaration of 'std::unique_ptr<opentelemetry::v1::exporter::otlp::OtlpHttpClient,std::default_delete<opentelemetry::v1::exporter::otlp::OtlpHttpClient>>'
[102/123] Building CXX object exporters\otlp\CMakeFiles\opentelemetry_exporter_otlp_http.dir\src\otlp_http_exporter.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter.h(78): warning C4251: 'opentelemetry::v1::exporter::otlp::OtlpHttpExporter::http_client_': class 'std::unique_ptr<opentelemetry::v1::exporter::otlp::OtlpHttpClient,std::default_delete<opentelemetry::v1::exporter::otlp::OtlpHttpClient>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::exporter::otlp::OtlpHttpExporter'
C:\dev\otel-test3\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter.h(78): note: see declaration of 'std::unique_ptr<opentelemetry::v1::exporter::otlp::OtlpHttpClient,std::default_delete<opentelemetry::v1::exporter::otlp::OtlpHttpClient>>'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[103/123] Building CXX object exporters\otlp\CMakeFiles\opentelemetry_exporter_otlp_http_log.dir\src\otlp_http_log_record_exporter.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[107/123] Building CXX object exporters\ostream\CMakeFiles\opentelemetry_exporter_ostream_span.dir\src\span_exporter.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[114/123] Building CXX object exporters\ostream\CMakeFiles\opentelemetry_exporter_ostream_span.dir\src\span_exporter_factory.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[119/123] Generating opentelemetry_cpp.def
Microsoft (R) C/C++ Optimizing Compiler Version 19.37.32824 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

opentelemetry_cpp.src
[120/123] Building CXX object exporters\memory\CMakeFiles\opentelemetry_exporter_in_memory.dir\src\in_memory_span_exporter_factory.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
[122/123] Building CXX object ext\src\dll\CMakeFiles\opentelemetry_cpp.dir\dllmain.cc.obj
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::TraceState'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::common::KeyValueProperties,std::default_delete<opentelemetry::v1::common::KeyValueProperties>>'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(30): warning C4275: non dll-interface class 'opentelemetry::v1::trace::Span' used as base for dll-interface class 'opentelemetry::v1::trace::NoopSpan'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/scope.h(16): note: see declaration of 'opentelemetry::v1::trace::Span'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(30): note: see declaration of 'opentelemetry::v1::trace::NoopSpan'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(72): warning C4251: 'opentelemetry::v1::trace::NoopSpan::tracer_': class 'std::shared_ptr<opentelemetry::v1::trace::Tracer>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::NoopSpan'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/shared_ptr.h(17): note: see declaration of 'std::shared_ptr<opentelemetry::v1::trace::Tracer>'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(73): warning C4251: 'opentelemetry::v1::trace::NoopSpan::span_context_': class 'std::unique_ptr<opentelemetry::v1::trace::SpanContext,std::default_delete<opentelemetry::v1::trace::SpanContext>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::NoopSpan'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v1::trace::SpanContext,std::default_delete<opentelemetry::v1::trace::SpanContext>>'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(79): warning C4275: non dll-interface class 'opentelemetry::v1::trace::Tracer' used as base for dll-interface class 'opentelemetry::v1::trace::NoopTracer'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/tracer_provider.h(16): note: see declaration of 'opentelemetry::v1::trace::Tracer'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(79): note: see declaration of 'opentelemetry::v1::trace::NoopTracer'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(81): warning C4251: 'std::enable_shared_from_this<opentelemetry::v1::trace::NoopTracer>::_Wptr': class 'std::weak_ptr<_Ty>' needs to have dll-interface to be used by clients of class 'std::enable_shared_from_this<opentelemetry::v1::trace::NoopTracer>'
        with
        [
            _Ty=opentelemetry::v1::trace::NoopTracer
        ]
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\memory(3143): note: see declaration of 'std::weak_ptr<_Ty>'
        with
        [
            _Ty=opentelemetry::v1::trace::NoopTracer
        ]
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(130): warning C4251: 'opentelemetry::v1::trace::NoopTracerProvider::tracer_': class 'std::shared_ptr<opentelemetry::v1::trace::Tracer>' needs to have dll-interface to be used by clients of class 'opentelemetry::v1::trace::NoopTracerProvider'
C:\dev\otel-test3\opentelemetry-cpp\api\include\opentelemetry/std/shared_ptr.h(17): note: see declaration of 'std::shared_ptr<opentelemetry::v1::trace::Tracer>'
[123/123] Linking CXX shared library ext\src\dll\opentelemetry_cpp.dll
FAILED: ext/src/dll/opentelemetry_cpp.dll ext/src/dll/opentelemetry_cpp.lib
cmd.exe /C "cd . && "C:\Program Files\CMake\bin\cmake.exe" -E vs_link_dll --intdir=ext\src\dll\CMakeFiles\opentelemetry_cpp.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\mt.exe --manifests  -- C:\PROGRA~1\MICROS~3\2022\ENTERP~1\VC\Tools\MSVC\1437~1.328\bin\Hostx64\x64\link.exe /nologo ext\src\dll\CMakeFiles\opentelemetry_cpp.dir\dllmain.cc.obj  /out:ext\src\dll\opentelemetry_cpp.dll /implib:ext\src\dll\opentelemetry_cpp.lib /pdb:ext\src\dll\opentelemetry_cpp.pdb /dll /version:0.0 /machine:x64 /debug /INCREMENTAL  /DEF:ext\src\dll\opentelemetry_cpp.def  sdk\src\trace\opentelemetry_trace.lib  exporters\ostream\opentelemetry_exporter_ostream_span.lib  exporters\otlp\opentelemetry_exporter_otlp_http.lib  sdk\src\metrics\opentelemetry_metrics.lib  exporters\ostream\opentelemetry_exporter_ostream_metrics.lib  exporters\otlp\opentelemetry_exporter_otlp_http_metric.lib  sdk\src\logs\opentelemetry_logs.lib  exporters\ostream\opentelemetry_exporter_ostream_logs.lib  exporters\otlp\opentelemetry_exporter_otlp_http_log.lib  exporters\otlp\opentelemetry_otlp_recordable.lib  sdk\src\trace\opentelemetry_trace.lib  sdk\src\metrics\opentelemetry_metrics.lib  sdk\src\logs\opentelemetry_logs.lib  sdk\src\resource\opentelemetry_resources.lib  exporters\otlp\opentelemetry_exporter_otlp_http_client.lib  opentelemetry_proto.lib  C:\dev\otel-test3\opentelemetry-cpp\tools\vcpkg\installed\x64-windows\debug\lib\libprotobufd.lib  ext\src\http\client\curl\opentelemetry_http_client_curl.lib  sdk\src\common\opentelemetry_common.lib  C:\dev\otel-test3\opentelemetry-cpp\tools\vcpkg\installed\x64-windows\debug\lib\libcurl-d.lib  winmm.lib  ws2_32.lib  C:\dev\otel-test3\opentelemetry-cpp\tools\vcpkg\installed\x64-windows\debug\lib\zlibd.lib  advapi32.lib  crypt32.lib  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib  && cmd.exe /C "cd /D C:\dev\otel-test3\opentelemetry-cpp\build\ext\src\dll && "C:\Program Files\PowerShell\7\pwsh.exe" -noprofile -executionpolicy Bypass -file C:/dev/otel-test3/opentelemetry-cpp/tools/vcpkg/scripts/buildsystems/msbuild/applocal.ps1 -targetBinary C:/dev/otel-test3/opentelemetry-cpp/build/ext/src/dll/opentelemetry_cpp.dll -installedDir C:/dev/otel-test3/opentelemetry-cpp/tools/vcpkg/installed/x64-windows/debug/bin -OutVariable out""
LINK Pass 1: command "C:\PROGRA~1\MICROS~3\2022\ENTERP~1\VC\Tools\MSVC\1437~1.328\bin\Hostx64\x64\link.exe /nologo ext\src\dll\CMakeFiles\opentelemetry_cpp.dir\dllmain.cc.obj /out:ext\src\dll\opentelemetry_cpp.dll /implib:ext\src\dll\opentelemetry_cpp.lib /pdb:ext\src\dll\opentelemetry_cpp.pdb /dll /version:0.0 /machine:x64 /debug /INCREMENTAL /DEF:ext\src\dll\opentelemetry_cpp.def sdk\src\trace\opentelemetry_trace.lib exporters\ostream\opentelemetry_exporter_ostream_span.lib exporters\otlp\opentelemetry_exporter_otlp_http.lib sdk\src\metrics\opentelemetry_metrics.lib exporters\ostream\opentelemetry_exporter_ostream_metrics.lib exporters\otlp\opentelemetry_exporter_otlp_http_metric.lib sdk\src\logs\opentelemetry_logs.lib exporters\ostream\opentelemetry_exporter_ostream_logs.lib exporters\otlp\opentelemetry_exporter_otlp_http_log.lib exporters\otlp\opentelemetry_otlp_recordable.lib sdk\src\trace\opentelemetry_trace.lib sdk\src\metrics\opentelemetry_metrics.lib sdk\src\logs\opentelemetry_logs.lib sdk\src\resource\opentelemetry_resources.lib exporters\otlp\opentelemetry_exporter_otlp_http_client.lib opentelemetry_proto.lib C:\dev\otel-test3\opentelemetry-cpp\tools\vcpkg\installed\x64-windows\debug\lib\libprotobufd.lib ext\src\http\client\curl\opentelemetry_http_client_curl.lib sdk\src\common\opentelemetry_common.lib C:\dev\otel-test3\opentelemetry-cpp\tools\vcpkg\installed\x64-windows\debug\lib\libcurl-d.lib winmm.lib ws2_32.lib C:\dev\otel-test3\opentelemetry-cpp\tools\vcpkg\installed\x64-windows\debug\lib\zlibd.lib advapi32.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:ext\src\dll\CMakeFiles\opentelemetry_cpp.dir/intermediate.manifest ext\src\dll\CMakeFiles\opentelemetry_cpp.dir/manifest.res" failed (exit code 1120) with the following output:
   Creating library ext\src\dll\opentelemetry_cpp.lib and object ext\src\dll\opentelemetry_cpp.exp
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::sdk::metrics::InstrumentSelector,struct std::default_delete<class opentelemetry::v1::sdk::metrics::InstrumentSelector> > __cdecl opentelemetry::v1::sdk::metrics::InstrumentSelectorFactory::Create(enum opentelemetry::v1::sdk::metrics::InstrumentType,class opentelemetry::v1::nostd::string_view,class opentelemetry::v1::nostd::string_view)" (?Create@InstrumentSelectorFactory@metrics@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VInstrumentSelector@metrics@sdk@v1@opentelemetry@@U?$default_delete@VInstrumentSelector@metrics@sdk@v1@opentelemetry@@@std@@@std@@W4InstrumentType@2345@Vstring_view@nostd@45@1@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::sdk::metrics::MeterSelector,struct std::default_delete<class opentelemetry::v1::sdk::metrics::MeterSelector> > __cdecl opentelemetry::v1::sdk::metrics::MeterSelectorFactory::Create(class opentelemetry::v1::nostd::string_view,class opentelemetry::v1::nostd::string_view,class opentelemetry::v1::nostd::string_view)" (?Create@MeterSelectorFactory@metrics@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VMeterSelector@metrics@sdk@v1@opentelemetry@@U?$default_delete@VMeterSelector@metrics@sdk@v1@opentelemetry@@@std@@@std@@Vstring_view@nostd@45@00@Z)
ext\src\dll\opentelemetry_cpp.dll : fatal error LNK1120: 2 unresolved externals
ninja: build stopped: subcommand failed.





@perhapsmaple
Copy link
Contributor

Hi @Dangeroustuber and @meastp I can confirm that there are linker errors when building the DLL with -DWITH_STL=ON. LNK2001 is supposed to mean that the function definition is not found. I'm new to this project, so any help from the maintainers is appreciated.

@perhapsmaple
Copy link
Contributor

perhapsmaple commented Oct 27, 2023

Thanks @Dangeroustuber and @meastp for bringing this to my issue. I think I have found the cause of the linker errors. The function definitions for MeterSelectorFactory::Create and InstrumentSelectorFactory::Create are different for the nostd and stl builds.

Cmake build WITH_STL=OFF:

?Create@MeterSelectorFactory@metrics@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VMeterSelector@metrics@sdk@v1@opentelemetry@@U?$default_delete@VMeterSelector@metrics@sdk@v1@opentelemetry@@@std@@@std@@Vstring_view@nostd@45@00@Z

?Create@InstrumentSelectorFactory@metrics@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VInstrumentSelector@metrics@sdk@v1@opentelemetry@@U?$default_delete@VInstrumentSelector@metrics@sdk@v1@opentelemetry@@@std@@@std@@W4InstrumentType@2345@Vstring_view@nostd@45@1@Z

CMake build WITH_STL=ON:

?Create@MeterSelectorFactory@metrics@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VMeterSelector@metrics@sdk@v1@opentelemetry@@U?$default_delete@VMeterSelector@metrics@sdk@v1@opentelemetry@@@std@@@std@@V?$basic_string_view@DU?$char_traits@D@std@@@7@00@Z

?Create@InstrumentSelectorFactory@metrics@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VInstrumentSelector@metrics@sdk@v1@opentelemetry@@U?$default_delete@VInstrumentSelector@metrics@sdk@v1@opentelemetry@@@std@@@std@@W4InstrumentType@2345@V?$basic_string_view@DU?$char_traits@D@std@@@7@1@Z

There are also a bunch of linker errors when attempting to build the dll even after patching the new definitions in and compiling the examples.

http_metric_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefa
ultMetricsSslCertificatePath(void)" (?GetOtlpDefaultMetricsSslCertificatePath@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "publ
ic: __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpMetricExporterOptions::OtlpHttpMetricExporterOptions(void)" (??0OtlpHttpMetricExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentele
metry-cpp\build\examples\otlp\example_otlp_http_metric.vcxproj]
http_metric_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefa
ultMetricsSslCertificateString(void)" (?GetOtlpDefaultMetricsSslCertificateString@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "
public: __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpMetricExporterOptions::OtlpHttpMetricExporterOptions(void)" (??0OtlpHttpMetricExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\open
telemetry-cpp\build\examples\otlp\example_otlp_http_metric.vcxproj]
http_metric_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefa
ultMetricsSslClientKeyPath(void)" (?GetOtlpDefaultMetricsSslClientKeyPath@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public:
__cdecl opentelemetry::v1::exporter::otlp::OtlpHttpMetricExporterOptions::OtlpHttpMetricExporterOptions(void)" (??0OtlpHttpMetricExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetr
y-cpp\build\examples\otlp\example_otlp_http_metric.vcxproj]
http_metric_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefa
ultMetricsSslClientKeyString(void)" (?GetOtlpDefaultMetricsSslClientKeyString@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "publ
ic: __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpMetricExporterOptions::OtlpHttpMetricExporterOptions(void)" (??0OtlpHttpMetricExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentele
metry-cpp\build\examples\otlp\example_otlp_http_metric.vcxproj]
http_metric_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefa
ultMetricsSslClientCertificatePath(void)" (?GetOtlpDefaultMetricsSslClientCertificatePath@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in fu
nction "public: __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpMetricExporterOptions::OtlpHttpMetricExporterOptions(void)" (??0OtlpHttpMetricExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\re
pos\opentelemetry-cpp\build\examples\otlp\example_otlp_http_metric.vcxproj]
http_metric_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefa
ultMetricsSslClientCertificateString(void)" (?GetOtlpDefaultMetricsSslClientCertificateString@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced i
n function "public: __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpMetricExporterOptions::OtlpHttpMetricExporterOptions(void)" (??0OtlpHttpMetricExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D
:\repos\opentelemetry-cpp\build\examples\otlp\example_otlp_http_metric.vcxproj]
http_metric_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefa
ultMetricsSslTlsMinVersion(void)" (?GetOtlpDefaultMetricsSslTlsMinVersion@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public:
__cdecl opentelemetry::v1::exporter::otlp::OtlpHttpMetricExporterOptions::OtlpHttpMetricExporterOptions(void)" (??0OtlpHttpMetricExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetr
y-cpp\build\examples\otlp\example_otlp_http_metric.vcxproj]
http_metric_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefa
ultMetricsSslTlsMaxVersion(void)" (?GetOtlpDefaultMetricsSslTlsMaxVersion@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public:
__cdecl opentelemetry::v1::exporter::otlp::OtlpHttpMetricExporterOptions::OtlpHttpMetricExporterOptions(void)" (??0OtlpHttpMetricExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetr
y-cpp\build\examples\otlp\example_otlp_http_metric.vcxproj]
http_metric_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefa
ultMetricsSslTlsCipher(void)" (?GetOtlpDefaultMetricsSslTlsCipher@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: __cdecl
opentelemetry::v1::exporter::otlp::OtlpHttpMetricExporterOptions::OtlpHttpMetricExporterOptions(void)" (??0OtlpHttpMetricExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\bu
ild\examples\otlp\example_otlp_http_metric.vcxproj]
http_metric_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefa
ultMetricsSslTlsCipherSuite(void)" (?GetOtlpDefaultMetricsSslTlsCipherSuite@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public
: __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpMetricExporterOptions::OtlpHttpMetricExporterOptions(void)" (??0OtlpHttpMetricExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\openteleme
try-cpp\build\examples\otlp\example_otlp_http_metric.vcxproj]
D:\repos\opentelemetry-cpp\build\examples\otlp\Debug\example_otlp_http_metric.exe : fatal error LNK1120: 10 unresolved externals [D:\repos\opentelemetry-cpp\build\examples\otlp\example_otlp_http_metric.vcxpro
j]
http_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultTrac
esSslCertificatePath(void)" (?GetOtlpDefaultTracesSslCertificatePath@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: __cde
cl opentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\build\examples\ot
lp\example_otlp_http.vcxproj]
http_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultTrac
esSslCertificateString(void)" (?GetOtlpDefaultTracesSslCertificateString@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: _
_cdecl opentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\build\example
s\otlp\example_otlp_http.vcxproj]
http_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultTrac
esSslClientKeyPath(void)" (?GetOtlpDefaultTracesSslClientKeyPath@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: __cdecl o
pentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\build\examples\otlp\e
xample_otlp_http.vcxproj]
http_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultTrac
esSslClientKeyString(void)" (?GetOtlpDefaultTracesSslClientKeyString@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: __cde
cl opentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\build\examples\ot
lp\example_otlp_http.vcxproj]
http_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultTrac
esSslClientCertificatePath(void)" (?GetOtlpDefaultTracesSslClientCertificatePath@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "p
ublic: __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\build
\examples\otlp\example_otlp_http.vcxproj]
http_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultTrac
esSslClientCertificateString(void)" (?GetOtlpDefaultTracesSslClientCertificateString@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in functio
n "public: __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\b
uild\examples\otlp\example_otlp_http.vcxproj]
http_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultTrac
esSslTlsMinVersion(void)" (?GetOtlpDefaultTracesSslTlsMinVersion@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: __cdecl o
pentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\build\examples\otlp\e
xample_otlp_http.vcxproj]
http_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultTrac
esSslTlsMaxVersion(void)" (?GetOtlpDefaultTracesSslTlsMaxVersion@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: __cdecl o
pentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\build\examples\otlp\e
xample_otlp_http.vcxproj]
http_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultTrac
esSslTlsCipher(void)" (?GetOtlpDefaultTracesSslTlsCipher@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: __cdecl opentelem
etry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\build\examples\otlp\example_o
tlp_http.vcxproj]
http_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultTrac
esSslTlsCipherSuite(void)" (?GetOtlpDefaultTracesSslTlsCipherSuite@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: __cdecl
 opentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\build\examples\otlp
\example_otlp_http.vcxproj]
D:\repos\opentelemetry-cpp\build\examples\otlp\Debug\example_otlp_http.exe : fatal error LNK1120: 10 unresolved externals [D:\repos\opentelemetry-cpp\build\examples\otlp\example_otlp_http.vcxproj]
  metrics_ostream_example.vcxproj -> D:\repos\opentelemetry-cpp\build\examples\metrics_simple\Debug\metrics_ostream_example.exe
http_log_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefault
TracesSslCertificatePath(void)" (?GetOtlpDefaultTracesSslCertificatePath@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: _
_cdecl opentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\build\example
s\otlp\example_otlp_http_log.vcxproj]
http_log_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefault
LogsSslCertificatePath(void)" (?GetOtlpDefaultLogsSslCertificatePath@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: __cde
cl opentelemetry::v1::exporter::otlp::OtlpHttpLogRecordExporterOptions::OtlpHttpLogRecordExporterOptions(void)" (??0OtlpHttpLogRecordExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentele
metry-cpp\build\examples\otlp\example_otlp_http_log.vcxproj]
http_log_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefault
TracesSslCertificateString(void)" (?GetOtlpDefaultTracesSslCertificateString@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "publi
c: __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\build\exa
mples\otlp\example_otlp_http_log.vcxproj]
http_log_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefault
LogsSslCertificateString(void)" (?GetOtlpDefaultLogsSslCertificateString@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: _
_cdecl opentelemetry::v1::exporter::otlp::OtlpHttpLogRecordExporterOptions::OtlpHttpLogRecordExporterOptions(void)" (??0OtlpHttpLogRecordExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\open
telemetry-cpp\build\examples\otlp\example_otlp_http_log.vcxproj]
http_log_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefault
TracesSslClientKeyPath(void)" (?GetOtlpDefaultTracesSslClientKeyPath@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: __cde
cl opentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\build\examples\ot
lp\example_otlp_http_log.vcxproj]
http_log_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefault
LogsSslClientKeyPath(void)" (?GetOtlpDefaultLogsSslClientKeyPath@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: __cdecl o
pentelemetry::v1::exporter::otlp::OtlpHttpLogRecordExporterOptions::OtlpHttpLogRecordExporterOptions(void)" (??0OtlpHttpLogRecordExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetr
y-cpp\build\examples\otlp\example_otlp_http_log.vcxproj]
http_log_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefault
TracesSslClientKeyString(void)" (?GetOtlpDefaultTracesSslClientKeyString@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: _
_cdecl opentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\build\example
s\otlp\example_otlp_http_log.vcxproj]
http_log_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefault
LogsSslClientKeyString(void)" (?GetOtlpDefaultLogsSslClientKeyString@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: __cde
cl opentelemetry::v1::exporter::otlp::OtlpHttpLogRecordExporterOptions::OtlpHttpLogRecordExporterOptions(void)" (??0OtlpHttpLogRecordExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentele
metry-cpp\build\examples\otlp\example_otlp_http_log.vcxproj]
http_log_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefault
TracesSslClientCertificatePath(void)" (?GetOtlpDefaultTracesSslClientCertificatePath@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in functio
n "public: __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\b
uild\examples\otlp\example_otlp_http_log.vcxproj]
http_log_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefault
LogsSslClientCertificatePath(void)" (?GetOtlpDefaultLogsSslClientCertificatePath@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "p
ublic: __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpLogRecordExporterOptions::OtlpHttpLogRecordExporterOptions(void)" (??0OtlpHttpLogRecordExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\re
pos\opentelemetry-cpp\build\examples\otlp\example_otlp_http_log.vcxproj]
http_log_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefault
TracesSslClientCertificateString(void)" (?GetOtlpDefaultTracesSslClientCertificateString@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in fun
ction "public: __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-c
pp\build\examples\otlp\example_otlp_http_log.vcxproj]
http_log_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefault
LogsSslClientCertificateString(void)" (?GetOtlpDefaultLogsSslClientCertificateString@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in functio
n "public: __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpLogRecordExporterOptions::OtlpHttpLogRecordExporterOptions(void)" (??0OtlpHttpLogRecordExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D
:\repos\opentelemetry-cpp\build\examples\otlp\example_otlp_http_log.vcxproj]
http_log_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefault
TracesSslTlsMinVersion(void)" (?GetOtlpDefaultTracesSslTlsMinVersion@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: __cde
cl opentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\build\examples\ot
lp\example_otlp_http_log.vcxproj]
http_log_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefault
LogsSslTlsMinVersion(void)" (?GetOtlpDefaultLogsSslTlsMinVersion@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: __cdecl o
pentelemetry::v1::exporter::otlp::OtlpHttpLogRecordExporterOptions::OtlpHttpLogRecordExporterOptions(void)" (??0OtlpHttpLogRecordExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetr
y-cpp\build\examples\otlp\example_otlp_http_log.vcxproj]
http_log_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefault
TracesSslTlsMaxVersion(void)" (?GetOtlpDefaultTracesSslTlsMaxVersion@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: __cde
cl opentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\build\examples\ot
lp\example_otlp_http_log.vcxproj]
http_log_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefault
LogsSslTlsMaxVersion(void)" (?GetOtlpDefaultLogsSslTlsMaxVersion@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: __cdecl o
pentelemetry::v1::exporter::otlp::OtlpHttpLogRecordExporterOptions::OtlpHttpLogRecordExporterOptions(void)" (??0OtlpHttpLogRecordExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetr
y-cpp\build\examples\otlp\example_otlp_http_log.vcxproj]
http_log_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefault
TracesSslTlsCipher(void)" (?GetOtlpDefaultTracesSslTlsCipher@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: __cdecl opent
elemetry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\build\examples\otlp\examp
le_otlp_http_log.vcxproj]
http_log_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefault
LogsSslTlsCipher(void)" (?GetOtlpDefaultLogsSslTlsCipher@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: __cdecl opentelem
etry::v1::exporter::otlp::OtlpHttpLogRecordExporterOptions::OtlpHttpLogRecordExporterOptions(void)" (??0OtlpHttpLogRecordExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\bu
ild\examples\otlp\example_otlp_http_log.vcxproj]
http_log_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefault
TracesSslTlsCipherSuite(void)" (?GetOtlpDefaultTracesSslTlsCipherSuite@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: __c
decl opentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\opentelemetry-cpp\build\examples\
otlp\example_otlp_http_log.vcxproj]
http_log_main.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefault
LogsSslTlsCipherSuite(void)" (?GetOtlpDefaultLogsSslTlsCipherSuite@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) referenced in function "public: __cdecl
 opentelemetry::v1::exporter::otlp::OtlpHttpLogRecordExporterOptions::OtlpHttpLogRecordExporterOptions(void)" (??0OtlpHttpLogRecordExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ) [D:\repos\openteleme
try-cpp\build\examples\otlp\example_otlp_http_log.vcxproj]
D:\repos\opentelemetry-cpp\build\examples\otlp\Debug\example_otlp_http_log.exe : fatal error LNK1120: 20 unresolved externals [D:\repos\opentelemetry-cpp\build\examples\otlp\example_otlp_http_log.vcxproj]

Every linker error is related to exporting of HttpExporterOptions related members. I'm assuming I can solve this by adding a few #if defined(WITH_STL) statements to the opentelemetry_cpp.src file, along with adding all of the new missing definitions. Pinging @ThomsonTan for help.

@marcalff
Copy link
Member

Thanks @perhapsmaple for the analysis.

About all the link errors involving GetOtlpDefaultMetricsSslCertificatePath and friends, a pre requisite is to fix this issue:

and in particular to move all the calls to get defaults from the option header to the cc file.

@lalitb
Copy link
Member

lalitb commented Nov 1, 2023

Reopening as #2387 fixes it partially.

@lalitb lalitb reopened this Nov 1, 2023
@github-actions github-actions bot added the needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. label Nov 1, 2023
@marcalff marcalff removed the needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. label Nov 1, 2023
@Dangeroustuber
Copy link
Author

Dangeroustuber commented Nov 16, 2023

With #2388 being merged i tried this again. There are still some errors that occur during build on windows. Initially i built with almost everything off, and that does manage to link and fully build. I tried to use it in the code and it gave symbol errors when attempting to use code from basic traces example. So now i've built with http_examples, examples, func_tests and so on.

The error from the traces example code (traces and logs worked before, it was metrics that was the problem) was just a single error, but building more things shows that other problems would have come up.

EDIT:
I just tried building it abi version 1 and that seems to work.

Environment:
Windows 10 x64
Visual studio 2022 17.7.4

Steps to reproduce:

  • open x64 Native Tools Command Prompt for VS 2022
  • clone repo
  • make build directory in opentelemetry-cpp
  • run this cmake in the build directory
cmake -G Ninja .. 
-DBUILD_TESTING=ON
-DOPENTELEMETRY_BUILD_DLL=ON
-DOPENTELEMETRY_INSTALL=ON 
-DWITH_STL=ON 
-DWITH_OTLP_HTTP=ON
-DWITH_FUNC_TESTS=ON 
-DWITH_EXAMPLES_HTTP=ON 
-DWITH_EXAMPLES=ON
-DWITH_ETW=OFF 
-DWITH_ELASTICSEARCH=OFF
-DWITH_BENCHMARK=ON 
-DWITH_ABI_VERSION_2=ON 
-DWITH_ABI_VERSION_1=OFF 
-DCMAKE_CXX_STANDARD=23
  • then run ninja

output from ninja from first failure onwards:

[366/410] Linking CXX shared library ext\src\dll\opentelemetry_cpp.dll
FAILED: ext/src/dll/opentelemetry_cpp.dll ext/src/dll/opentelemetry_cpp.lib
cmd.exe /C "cd . && "C:\Program Files\CMake\bin\cmake.exe" -E vs_link_dll --intdir=ext\src\dll\CMakeFiles\opentelemetry_cpp.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\mt.exe --manifests  -- C:\PROGRA~1\MICROS~3\2022\ENTERP~1\VC\Tools\MSVC\1437~1.328\bin\Hostx64\x64\link.exe /nologo ext\src\dll\CMakeFiles\opentelemetry_cpp.dir\dllmain.cc.obj  /out:ext\src\dll\opentelemetry_cpp.dll /implib:ext\src\dll\opentelemetry_cpp.lib /pdb:ext\src\dll\opentelemetry_cpp.pdb /dll /version:0.0 /machine:x64 /debug /INCREMENTAL  /DEF:ext\src\dll\opentelemetry_cpp.def  sdk\src\trace\opentelemetry_trace.lib  exporters\ostream\opentelemetry_exporter_ostream_span.lib  exporters\otlp\opentelemetry_exporter_otlp_http.lib  sdk\src\metrics\opentelemetry_metrics.lib  exporters\ostream\opentelemetry_exporter_ostream_metrics.lib  exporters\otlp\opentelemetry_exporter_otlp_http_metric.lib  sdk\src\logs\opentelemetry_logs.lib  exporters\ostream\opentelemetry_exporter_ostream_logs.lib  exporters\otlp\opentelemetry_exporter_otlp_http_log.lib  exporters\otlp\opentelemetry_otlp_recordable.lib  sdk\src\trace\opentelemetry_trace.lib  sdk\src\metrics\opentelemetry_metrics.lib  sdk\src\logs\opentelemetry_logs.lib  sdk\src\resource\opentelemetry_resources.lib  exporters\otlp\opentelemetry_exporter_otlp_http_client.lib  opentelemetry_proto.lib  C:\dev\otel-test2\opentelemetry-cpp\tools\vcpkg\installed\x64-windows\debug\lib\libprotobufd.lib  ext\src\http\client\curl\opentelemetry_http_client_curl.lib  sdk\src\common\opentelemetry_common.lib  C:\dev\otel-test2\opentelemetry-cpp\tools\vcpkg\installed\x64-windows\debug\lib\libcurl-d.lib  winmm.lib  ws2_32.lib  C:\dev\otel-test2\opentelemetry-cpp\tools\vcpkg\installed\x64-windows\debug\lib\zlibd.lib  advapi32.lib  crypt32.lib  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib  && cmd.exe /C "cd /D C:\dev\otel-test2\opentelemetry-cpp\build\ext\src\dll && "C:\Program Files\PowerShell\7\pwsh.exe" -noprofile -executionpolicy Bypass -file C:/dev/otel-test2/opentelemetry-cpp/tools/vcpkg/scripts/buildsystems/msbuild/applocal.ps1 -targetBinary C:/dev/otel-test2/opentelemetry-cpp/build/ext/src/dll/opentelemetry_cpp.dll -installedDir C:/dev/otel-test2/opentelemetry-cpp/tools/vcpkg/installed/x64-windows/debug/bin -OutVariable out""
LINK Pass 1: command "C:\PROGRA~1\MICROS~3\2022\ENTERP~1\VC\Tools\MSVC\1437~1.328\bin\Hostx64\x64\link.exe /nologo ext\src\dll\CMakeFiles\opentelemetry_cpp.dir\dllmain.cc.obj /out:ext\src\dll\opentelemetry_cpp.dll /implib:ext\src\dll\opentelemetry_cpp.lib /pdb:ext\src\dll\opentelemetry_cpp.pdb /dll /version:0.0 /machine:x64 /debug /INCREMENTAL /DEF:ext\src\dll\opentelemetry_cpp.def sdk\src\trace\opentelemetry_trace.lib exporters\ostream\opentelemetry_exporter_ostream_span.lib exporters\otlp\opentelemetry_exporter_otlp_http.lib sdk\src\metrics\opentelemetry_metrics.lib exporters\ostream\opentelemetry_exporter_ostream_metrics.lib exporters\otlp\opentelemetry_exporter_otlp_http_metric.lib sdk\src\logs\opentelemetry_logs.lib exporters\ostream\opentelemetry_exporter_ostream_logs.lib exporters\otlp\opentelemetry_exporter_otlp_http_log.lib exporters\otlp\opentelemetry_otlp_recordable.lib sdk\src\trace\opentelemetry_trace.lib sdk\src\metrics\opentelemetry_metrics.lib sdk\src\logs\opentelemetry_logs.lib sdk\src\resource\opentelemetry_resources.lib exporters\otlp\opentelemetry_exporter_otlp_http_client.lib opentelemetry_proto.lib C:\dev\otel-test2\opentelemetry-cpp\tools\vcpkg\installed\x64-windows\debug\lib\libprotobufd.lib ext\src\http\client\curl\opentelemetry_http_client_curl.lib sdk\src\common\opentelemetry_common.lib C:\dev\otel-test2\opentelemetry-cpp\tools\vcpkg\installed\x64-windows\debug\lib\libcurl-d.lib winmm.lib ws2_32.lib C:\dev\otel-test2\opentelemetry-cpp\tools\vcpkg\installed\x64-windows\debug\lib\zlibd.lib advapi32.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:ext\src\dll\CMakeFiles\opentelemetry_cpp.dir/intermediate.manifest ext\src\dll\CMakeFiles\opentelemetry_cpp.dir/manifest.res" failed (exit code 1120) with the following output:
   Creating library ext\src\dll\opentelemetry_cpp.lib and object ext\src\dll\opentelemetry_cpp.exp
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: __cdecl opentelemetry::v1::exporter::logs::OStreamLogRecordExporter::OStreamLogRecordExporter(class std::basic_ostream<char,struct std::char_traits<char> > &)" (??0OStreamLogRecordExporter@logs@exporter@v1@opentelemetry@@QEAA@AEAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions::OtlpHttpExporterOptions(void)" (??0OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpLogRecordExporterOptions::OtlpHttpLogRecordExporterOptions(void)" (??0OtlpHttpLogRecordExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpMetricExporterOptions::OtlpHttpMetricExporterOptions(void)" (??0OtlpHttpMetricExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions::~OtlpHttpExporterOptions(void)" (??1OtlpHttpExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpLogRecordExporterOptions::~OtlpHttpLogRecordExporterOptions(void)" (??1OtlpHttpLogRecordExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpMetricExporterOptions::~OtlpHttpMetricExporterOptions(void)" (??1OtlpHttpMetricExporterOptions@otlp@exporter@v1@opentelemetry@@QEAA@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: void __cdecl opentelemetry::v1::sdk::metrics::MeterContext::AddMetricReader(class std::shared_ptr<class opentelemetry::v1::sdk::metrics::MetricReader>)" (?AddMetricReader@MeterContext@metrics@sdk@v1@opentelemetry@@QEAAXV?$shared_ptr@VMetricReader@metrics@sdk@v1@opentelemetry@@@std@@@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: void __cdecl opentelemetry::v1::sdk::metrics::MeterProvider::AddMetricReader(class std::shared_ptr<class opentelemetry::v1::sdk::metrics::MetricReader>)" (?AddMetricReader@MeterProvider@metrics@sdk@v1@opentelemetry@@QEAAXV?$shared_ptr@VMetricReader@metrics@sdk@v1@opentelemetry@@@std@@@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: void __cdecl opentelemetry::v1::sdk::metrics::MeterProvider::AddView(class std::unique_ptr<class opentelemetry::v1::sdk::metrics::InstrumentSelector,struct std::default_delete<class opentelemetry::v1::sdk::metrics::InstrumentSelector> >,class std::unique_ptr<class opentelemetry::v1::sdk::metrics::MeterSelector,struct std::default_delete<class opentelemetry::v1::sdk::metrics::MeterSelector> >,class std::unique_ptr<class opentelemetry::v1::sdk::metrics::View,struct std::default_delete<class opentelemetry::v1::sdk::metrics::View> >)" (?AddView@MeterProvider@metrics@sdk@v1@opentelemetry@@QEAAXV?$unique_ptr@VInstrumentSelector@metrics@sdk@v1@opentelemetry@@U?$default_delete@VInstrumentSelector@metrics@sdk@v1@opentelemetry@@@std@@@std@@V?$unique_ptr@VMeterSelector@metrics@sdk@v1@opentelemetry@@U?$default_delete@VMeterSelector@metrics@sdk@v1@opentelemetry@@@std@@@7@V?$unique_ptr@VView@metrics@sdk@v1@opentelemetry@@U?$default_delete@VView@metrics@sdk@v1@opentelemetry@@@std@@@7@@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::sdk::logs::LogRecordProcessor,struct std::default_delete<class opentelemetry::v1::sdk::logs::LogRecordProcessor> > __cdecl opentelemetry::v1::sdk::logs::BatchLogRecordProcessorFactory::Create(class std::unique_ptr<class opentelemetry::v1::sdk::logs::LogRecordExporter,struct std::default_delete<class opentelemetry::v1::sdk::logs::LogRecordExporter> > &&,struct opentelemetry::v1::sdk::logs::BatchLogRecordProcessorOptions const &)" (?Create@BatchLogRecordProcessorFactory@logs@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VLogRecordProcessor@logs@sdk@v1@opentelemetry@@U?$default_delete@VLogRecordProcessor@logs@sdk@v1@opentelemetry@@@std@@@std@@$$QEAV?$unique_ptr@VLogRecordExporter@logs@sdk@v1@opentelemetry@@U?$default_delete@VLogRecordExporter@logs@sdk@v1@opentelemetry@@@std@@@7@AEBUBatchLogRecordProcessorOptions@2345@@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::sdk::metrics::InstrumentSelector,struct std::default_delete<class opentelemetry::v1::sdk::metrics::InstrumentSelector> > __cdecl opentelemetry::v1::sdk::metrics::InstrumentSelectorFactory::Create(enum opentelemetry::v1::sdk::metrics::InstrumentType,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> > const &)" (?Create@InstrumentSelectorFactory@metrics@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VInstrumentSelector@metrics@sdk@v1@opentelemetry@@U?$default_delete@VInstrumentSelector@metrics@sdk@v1@opentelemetry@@@std@@@std@@W4InstrumentType@2345@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@7@1@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::logs::LoggerProvider,struct std::default_delete<class opentelemetry::v1::logs::LoggerProvider> > __cdecl opentelemetry::v1::sdk::logs::LoggerProviderFactory::Create(class std::unique_ptr<class opentelemetry::v1::sdk::logs::LogRecordProcessor,struct std::default_delete<class opentelemetry::v1::sdk::logs::LogRecordProcessor> > &&)" (?Create@LoggerProviderFactory@logs@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VLoggerProvider@logs@v1@opentelemetry@@U?$default_delete@VLoggerProvider@logs@v1@opentelemetry@@@std@@@std@@$$QEAV?$unique_ptr@VLogRecordProcessor@logs@sdk@v1@opentelemetry@@U?$default_delete@VLogRecordProcessor@logs@sdk@v1@opentelemetry@@@std@@@7@@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::sdk::metrics::MeterContext,struct std::default_delete<class opentelemetry::v1::sdk::metrics::MeterContext> > __cdecl opentelemetry::v1::sdk::metrics::MeterContextFactory::Create(void)" (?Create@MeterContextFactory@metrics@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VMeterContext@metrics@sdk@v1@opentelemetry@@U?$default_delete@VMeterContext@metrics@sdk@v1@opentelemetry@@@std@@@std@@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::metrics::MeterProvider,struct std::default_delete<class opentelemetry::v1::metrics::MeterProvider> > __cdecl opentelemetry::v1::sdk::metrics::MeterProviderFactory::Create(class std::unique_ptr<class opentelemetry::v1::sdk::metrics::MeterContext,struct std::default_delete<class opentelemetry::v1::sdk::metrics::MeterContext> >)" (?Create@MeterProviderFactory@metrics@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VMeterProvider@metrics@v1@opentelemetry@@U?$default_delete@VMeterProvider@metrics@v1@opentelemetry@@@std@@@std@@V?$unique_ptr@VMeterContext@metrics@sdk@v1@opentelemetry@@U?$default_delete@VMeterContext@metrics@sdk@v1@opentelemetry@@@std@@@7@@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::metrics::MeterProvider,struct std::default_delete<class opentelemetry::v1::metrics::MeterProvider> > __cdecl opentelemetry::v1::sdk::metrics::MeterProviderFactory::Create(void)" (?Create@MeterProviderFactory@metrics@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VMeterProvider@metrics@v1@opentelemetry@@U?$default_delete@VMeterProvider@metrics@v1@opentelemetry@@@std@@@std@@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::sdk::metrics::MeterSelector,struct std::default_delete<class opentelemetry::v1::sdk::metrics::MeterSelector> > __cdecl opentelemetry::v1::sdk::metrics::MeterSelectorFactory::Create(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> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?Create@MeterSelectorFactory@metrics@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VMeterSelector@metrics@sdk@v1@opentelemetry@@U?$default_delete@VMeterSelector@metrics@sdk@v1@opentelemetry@@@std@@@std@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@7@00@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::sdk::logs::LogRecordProcessor,struct std::default_delete<class opentelemetry::v1::sdk::logs::LogRecordProcessor> > __cdecl opentelemetry::v1::sdk::logs::MultiLogRecordProcessorFactory::Create(class std::vector<class std::unique_ptr<class opentelemetry::v1::sdk::logs::LogRecordProcessor,struct std::default_delete<class opentelemetry::v1::sdk::logs::LogRecordProcessor> >,class std::allocator<class std::unique_ptr<class opentelemetry::v1::sdk::logs::LogRecordProcessor,struct std::default_delete<class opentelemetry::v1::sdk::logs::LogRecordProcessor> > > > &&)" (?Create@MultiLogRecordProcessorFactory@logs@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VLogRecordProcessor@logs@sdk@v1@opentelemetry@@U?$default_delete@VLogRecordProcessor@logs@sdk@v1@opentelemetry@@@std@@@std@@$$QEAV?$vector@V?$unique_ptr@VLogRecordProcessor@logs@sdk@v1@opentelemetry@@U?$default_delete@VLogRecordProcessor@logs@sdk@v1@opentelemetry@@@std@@@std@@V?$allocator@V?$unique_ptr@VLogRecordProcessor@logs@sdk@v1@opentelemetry@@U?$default_delete@VLogRecordProcessor@logs@sdk@v1@opentelemetry@@@std@@@std@@@2@@7@@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::sdk::metrics::PushMetricExporter,struct std::default_delete<class opentelemetry::v1::sdk::metrics::PushMetricExporter> > __cdecl opentelemetry::v1::exporter::metrics::OStreamMetricExporterFactory::Create(void)" (?Create@OStreamMetricExporterFactory@metrics@exporter@v1@opentelemetry@@SA?AV?$unique_ptr@VPushMetricExporter@metrics@sdk@v1@opentelemetry@@U?$default_delete@VPushMetricExporter@metrics@sdk@v1@opentelemetry@@@std@@@std@@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::sdk::trace::SpanExporter,struct std::default_delete<class opentelemetry::v1::sdk::trace::SpanExporter> > __cdecl opentelemetry::v1::exporter::trace::OStreamSpanExporterFactory::Create(void)" (?Create@OStreamSpanExporterFactory@trace@exporter@v1@opentelemetry@@SA?AV?$unique_ptr@VSpanExporter@trace@sdk@v1@opentelemetry@@U?$default_delete@VSpanExporter@trace@sdk@v1@opentelemetry@@@std@@@std@@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::sdk::trace::SpanExporter,struct std::default_delete<class opentelemetry::v1::sdk::trace::SpanExporter> > __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpExporterFactory::Create(struct opentelemetry::v1::exporter::otlp::OtlpHttpExporterOptions const &)" (?Create@OtlpHttpExporterFactory@otlp@exporter@v1@opentelemetry@@SA?AV?$unique_ptr@VSpanExporter@trace@sdk@v1@opentelemetry@@U?$default_delete@VSpanExporter@trace@sdk@v1@opentelemetry@@@std@@@std@@AEBUOtlpHttpExporterOptions@2345@@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::sdk::logs::LogRecordExporter,struct std::default_delete<class opentelemetry::v1::sdk::logs::LogRecordExporter> > __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpLogRecordExporterFactory::Create(struct opentelemetry::v1::exporter::otlp::OtlpHttpLogRecordExporterOptions const &)" (?Create@OtlpHttpLogRecordExporterFactory@otlp@exporter@v1@opentelemetry@@SA?AV?$unique_ptr@VLogRecordExporter@logs@sdk@v1@opentelemetry@@U?$default_delete@VLogRecordExporter@logs@sdk@v1@opentelemetry@@@std@@@std@@AEBUOtlpHttpLogRecordExporterOptions@2345@@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::sdk::metrics::PushMetricExporter,struct std::default_delete<class opentelemetry::v1::sdk::metrics::PushMetricExporter> > __cdecl opentelemetry::v1::exporter::otlp::OtlpHttpMetricExporterFactory::Create(struct opentelemetry::v1::exporter::otlp::OtlpHttpMetricExporterOptions const &)" (?Create@OtlpHttpMetricExporterFactory@otlp@exporter@v1@opentelemetry@@SA?AV?$unique_ptr@VPushMetricExporter@metrics@sdk@v1@opentelemetry@@U?$default_delete@VPushMetricExporter@metrics@sdk@v1@opentelemetry@@@std@@@std@@AEBUOtlpHttpMetricExporterOptions@2345@@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::sdk::metrics::MetricReader,struct std::default_delete<class opentelemetry::v1::sdk::metrics::MetricReader> > __cdecl opentelemetry::v1::sdk::metrics::PeriodicExportingMetricReaderFactory::Create(class std::unique_ptr<class opentelemetry::v1::sdk::metrics::PushMetricExporter,struct std::default_delete<class opentelemetry::v1::sdk::metrics::PushMetricExporter> >,struct opentelemetry::v1::sdk::metrics::PeriodicExportingMetricReaderOptions const &)" (?Create@PeriodicExportingMetricReaderFactory@metrics@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VMetricReader@metrics@sdk@v1@opentelemetry@@U?$default_delete@VMetricReader@metrics@sdk@v1@opentelemetry@@@std@@@std@@V?$unique_ptr@VPushMetricExporter@metrics@sdk@v1@opentelemetry@@U?$default_delete@VPushMetricExporter@metrics@sdk@v1@opentelemetry@@@std@@@7@AEBUPeriodicExportingMetricReaderOptions@2345@@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::sdk::logs::LogRecordProcessor,struct std::default_delete<class opentelemetry::v1::sdk::logs::LogRecordProcessor> > __cdecl opentelemetry::v1::sdk::logs::SimpleLogRecordProcessorFactory::Create(class std::unique_ptr<class opentelemetry::v1::sdk::logs::LogRecordExporter,struct std::default_delete<class opentelemetry::v1::sdk::logs::LogRecordExporter> > &&)" (?Create@SimpleLogRecordProcessorFactory@logs@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VLogRecordProcessor@logs@sdk@v1@opentelemetry@@U?$default_delete@VLogRecordProcessor@logs@sdk@v1@opentelemetry@@@std@@@std@@$$QEAV?$unique_ptr@VLogRecordExporter@logs@sdk@v1@opentelemetry@@U?$default_delete@VLogRecordExporter@logs@sdk@v1@opentelemetry@@@std@@@7@@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::sdk::trace::SpanProcessor,struct std::default_delete<class opentelemetry::v1::sdk::trace::SpanProcessor> > __cdecl opentelemetry::v1::sdk::trace::SimpleSpanProcessorFactory::Create(class std::unique_ptr<class opentelemetry::v1::sdk::trace::SpanExporter,struct std::default_delete<class opentelemetry::v1::sdk::trace::SpanExporter> > &&)" (?Create@SimpleSpanProcessorFactory@trace@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VSpanProcessor@trace@sdk@v1@opentelemetry@@U?$default_delete@VSpanProcessor@trace@sdk@v1@opentelemetry@@@std@@@std@@$$QEAV?$unique_ptr@VSpanExporter@trace@sdk@v1@opentelemetry@@U?$default_delete@VSpanExporter@trace@sdk@v1@opentelemetry@@@std@@@7@@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::trace::TracerProvider,struct std::default_delete<class opentelemetry::v1::trace::TracerProvider> > __cdecl opentelemetry::v1::sdk::trace::TracerProviderFactory::Create(class std::unique_ptr<class opentelemetry::v1::sdk::trace::SpanProcessor,struct std::default_delete<class opentelemetry::v1::sdk::trace::SpanProcessor> >)" (?Create@TracerProviderFactory@trace@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VTracerProvider@trace@v1@opentelemetry@@U?$default_delete@VTracerProvider@trace@v1@opentelemetry@@@std@@@std@@V?$unique_ptr@VSpanProcessor@trace@sdk@v1@opentelemetry@@U?$default_delete@VSpanProcessor@trace@sdk@v1@opentelemetry@@@std@@@7@@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::sdk::metrics::View,struct std::default_delete<class opentelemetry::v1::sdk::metrics::View> > __cdecl opentelemetry::v1::sdk::metrics::ViewFactory::Create(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> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,enum opentelemetry::v1::sdk::metrics::AggregationType)" (?Create@ViewFactory@metrics@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VView@metrics@sdk@v1@opentelemetry@@U?$default_delete@VView@metrics@sdk@v1@opentelemetry@@@std@@@std@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@7@00W4AggregationType@2345@@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: static class std::unique_ptr<class opentelemetry::v1::sdk::metrics::View,struct std::default_delete<class opentelemetry::v1::sdk::metrics::View> > __cdecl opentelemetry::v1::sdk::metrics::ViewFactory::Create(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> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,enum opentelemetry::v1::sdk::metrics::AggregationType,class std::shared_ptr<class opentelemetry::v1::sdk::metrics::AggregationConfig>)" (?Create@ViewFactory@metrics@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VView@metrics@sdk@v1@opentelemetry@@U?$default_delete@VView@metrics@sdk@v1@opentelemetry@@@std@@@std@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@7@00W4AggregationType@2345@V?$shared_ptr@VAggregationConfig@metrics@sdk@v1@opentelemetry@@@7@@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: bool __cdecl opentelemetry::v1::sdk::logs::LoggerProvider::ForceFlush(class std::chrono::duration<__int64,struct std::ratio<1,1000000> >)" (?ForceFlush@LoggerProvider@logs@sdk@v1@opentelemetry@@QEAA_NV?$duration@_JU?$ratio@$00$0PECEA@@std@@@chrono@std@@@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "public: bool __cdecl opentelemetry::v1::sdk::trace::TracerProvider::ForceFlush(class std::chrono::duration<__int64,struct std::ratio<1,1000000> >)" (?ForceFlush@TracerProvider@trace@sdk@v1@opentelemetry@@QEAA_NV?$duration@_JU?$ratio@$00$0PECEA@@std@@@chrono@std@@@Z)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultHttpLogsEndpoint(void)" (?GetOtlpDefaultHttpLogsEndpoint@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultHttpMetricsEndpoint(void)" (?GetOtlpDefaultHttpMetricsEndpoint@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultHttpTracesEndpoint(void)" (?GetOtlpDefaultHttpTracesEndpoint@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "class std::multimap<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct opentelemetry::v1::exporter::otlp::cmp_ic,class std::allocator<struct std::pair<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> > > > > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultLogsHeaders(void)" (?GetOtlpDefaultLogsHeaders@otlp@exporter@v1@opentelemetry@@YA?AV?$multimap@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@Ucmp_ic@otlp@exporter@v1@opentelemetry@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@2@@std@@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultLogsSslCertificatePath(void)" (?GetOtlpDefaultLogsSslCertificatePath@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultLogsSslCertificateString(void)" (?GetOtlpDefaultLogsSslCertificateString@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "class std::chrono::duration<__int64,struct std::ratio<1,10000000> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultLogsTimeout(void)" (?GetOtlpDefaultLogsTimeout@otlp@exporter@v1@opentelemetry@@YA?AV?$duration@_JU?$ratio@$00$0JIJGIA@@std@@@chrono@std@@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "class std::multimap<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct opentelemetry::v1::exporter::otlp::cmp_ic,class std::allocator<struct std::pair<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> > > > > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultMetricsHeaders(void)" (?GetOtlpDefaultMetricsHeaders@otlp@exporter@v1@opentelemetry@@YA?AV?$multimap@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@Ucmp_ic@otlp@exporter@v1@opentelemetry@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@2@@std@@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultMetricsSslCertificatePath(void)" (?GetOtlpDefaultMetricsSslCertificatePath@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultMetricsSslCertificateString(void)" (?GetOtlpDefaultMetricsSslCertificateString@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "class std::chrono::duration<__int64,struct std::ratio<1,10000000> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultMetricsTimeout(void)" (?GetOtlpDefaultMetricsTimeout@otlp@exporter@v1@opentelemetry@@YA?AV?$duration@_JU?$ratio@$00$0JIJGIA@@std@@@chrono@std@@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "class std::multimap<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct opentelemetry::v1::exporter::otlp::cmp_ic,class std::allocator<struct std::pair<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> > > > > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultTracesHeaders(void)" (?GetOtlpDefaultTracesHeaders@otlp@exporter@v1@opentelemetry@@YA?AV?$multimap@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@Ucmp_ic@otlp@exporter@v1@opentelemetry@@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@2@@std@@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultTracesSslCertificatePath(void)" (?GetOtlpDefaultTracesSslCertificatePath@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultTracesSslCertificateString(void)" (?GetOtlpDefaultTracesSslCertificateString@otlp@exporter@v1@opentelemetry@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ)
opentelemetry_cpp.exp : error LNK2001: unresolved external symbol "class std::chrono::duration<__int64,struct std::ratio<1,10000000> > __cdecl opentelemetry::v1::exporter::otlp::GetOtlpDefaultTracesTimeout(void)" (?GetOtlpDefaultTracesTimeout@otlp@exporter@v1@opentelemetry@@YA?AV?$duration@_JU?$ratio@$00$0JIJGIA@@std@@@chrono@std@@XZ)
ext\src\dll\opentelemetry_cpp.dll : fatal error LNK1120: 46 unresolved externals
[368/410] Building CXX object examples\plugin\load\CMakeFiles\load_plugin_example.dir\main.cc.obj
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v2::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v2::common::KeyValueProperties,std::default_delete<opentelemetry::v2::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v2::trace::TraceState'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v2::common::KeyValueProperties,std::default_delete<opentelemetry::v2::common::KeyValueProperties>>'
[370/410] Building CXX object examples\otlp\CMakeFiles\example_otlp_http.dir\http_main.cc.obj
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(36): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::url': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(58): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::timeout': class 'std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\__msvc_chrono.hpp(638): note: see declaration of 'std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(61): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::http_headers': class 'std::multimap<std::string,std::string,opentelemetry::v2::exporter::otlp::cmp_ic,std::allocator<std::pair<const std::string,std::string>>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_environment.h(141): note: see declaration of 'std::multimap<std::string,std::string,opentelemetry::v2::exporter::otlp::cmp_ic,std::allocator<std::pair<const std::string,std::string>>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(76): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::ssl_ca_cert_path': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(79): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::ssl_ca_cert_string': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(82): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::ssl_client_key_path': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(85): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::ssl_client_key_string': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(88): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::ssl_client_cert_path': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(91): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::ssl_client_cert_string': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(96): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::ssl_min_tls': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(99): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::ssl_max_tls': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(102): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::ssl_cipher': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(105): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::ssl_cipher_suite': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v2::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v2::common::KeyValueProperties,std::default_delete<opentelemetry::v2::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v2::trace::TraceState'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v2::common::KeyValueProperties,std::default_delete<opentelemetry::v2::common::KeyValueProperties>>'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(31): warning C4275: non dll-interface class 'opentelemetry::v2::trace::Span' used as base for dll-interface class 'opentelemetry::v2::trace::NoopSpan'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/scope.h(16): note: see declaration of 'opentelemetry::v2::trace::Span'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(31): note: see declaration of 'opentelemetry::v2::trace::NoopSpan'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(81): warning C4251: 'opentelemetry::v2::trace::NoopSpan::tracer_': class 'std::shared_ptr<opentelemetry::v2::trace::Tracer>' needs to have dll-interface to be used by clients of class 'opentelemetry::v2::trace::NoopSpan'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/std/shared_ptr.h(17): note: see declaration of 'std::shared_ptr<opentelemetry::v2::trace::Tracer>'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(82): warning C4251: 'opentelemetry::v2::trace::NoopSpan::span_context_': class 'std::unique_ptr<opentelemetry::v2::trace::SpanContext,std::default_delete<opentelemetry::v2::trace::SpanContext>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v2::trace::NoopSpan'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v2::trace::SpanContext,std::default_delete<opentelemetry::v2::trace::SpanContext>>'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(88): warning C4275: non dll-interface class 'opentelemetry::v2::trace::Tracer' used as base for dll-interface class 'opentelemetry::v2::trace::NoopTracer'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/tracer_provider.h(16): note: see declaration of 'opentelemetry::v2::trace::Tracer'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(88): note: see declaration of 'opentelemetry::v2::trace::NoopTracer'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(90): warning C4251: 'std::enable_shared_from_this<opentelemetry::v2::trace::NoopTracer>::_Wptr': class 'std::weak_ptr<_Ty>' needs to have dll-interface to be used by clients of class 'std::enable_shared_from_this<opentelemetry::v2::trace::NoopTracer>'
        with
        [
            _Ty=opentelemetry::v2::trace::NoopTracer
        ]
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\memory(3143): note: see declaration of 'std::weak_ptr<_Ty>'
        with
        [
            _Ty=opentelemetry::v2::trace::NoopTracer
        ]
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(139): warning C4251: 'opentelemetry::v2::trace::NoopTracerProvider::tracer_': class 'std::shared_ptr<opentelemetry::v2::trace::Tracer>' needs to have dll-interface to be used by clients of class 'opentelemetry::v2::trace::NoopTracerProvider'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/std/shared_ptr.h(17): note: see declaration of 'std::shared_ptr<opentelemetry::v2::trace::Tracer>'
[371/410] Building CXX object examples\otlp\CMakeFiles\example_otlp_http_log.dir\http_log_main.cc.obj
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(36): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::url': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(58): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::timeout': class 'std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\__msvc_chrono.hpp(638): note: see declaration of 'std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(61): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::http_headers': class 'std::multimap<std::string,std::string,opentelemetry::v2::exporter::otlp::cmp_ic,std::allocator<std::pair<const std::string,std::string>>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_environment.h(141): note: see declaration of 'std::multimap<std::string,std::string,opentelemetry::v2::exporter::otlp::cmp_ic,std::allocator<std::pair<const std::string,std::string>>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(76): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::ssl_ca_cert_path': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(79): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::ssl_ca_cert_string': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(82): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::ssl_client_key_path': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(85): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::ssl_client_key_string': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(88): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::ssl_client_cert_path': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(91): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::ssl_client_cert_string': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(96): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::ssl_min_tls': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(99): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::ssl_max_tls': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(102): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::ssl_cipher': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_exporter_options.h(105): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions::ssl_cipher_suite': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_log_record_exporter_options.h(36): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions::url': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_log_record_exporter_options.h(58): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions::timeout': class 'std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\__msvc_chrono.hpp(638): note: see declaration of 'std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_log_record_exporter_options.h(61): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions::http_headers': class 'std::multimap<std::string,std::string,opentelemetry::v2::exporter::otlp::cmp_ic,std::allocator<std::pair<const std::string,std::string>>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_environment.h(141): note: see declaration of 'std::multimap<std::string,std::string,opentelemetry::v2::exporter::otlp::cmp_ic,std::allocator<std::pair<const std::string,std::string>>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_log_record_exporter_options.h(76): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions::ssl_ca_cert_path': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_log_record_exporter_options.h(79): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions::ssl_ca_cert_string': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_log_record_exporter_options.h(82): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions::ssl_client_key_path': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_log_record_exporter_options.h(85): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions::ssl_client_key_string': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_log_record_exporter_options.h(88): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions::ssl_client_cert_path': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_log_record_exporter_options.h(91): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions::ssl_client_cert_string': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_log_record_exporter_options.h(96): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions::ssl_min_tls': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_log_record_exporter_options.h(99): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions::ssl_max_tls': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_log_record_exporter_options.h(102): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions::ssl_cipher': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_log_record_exporter_options.h(105): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions::ssl_cipher_suite': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpLogRecordExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v2::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v2::common::KeyValueProperties,std::default_delete<opentelemetry::v2::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v2::trace::TraceState'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v2::common::KeyValueProperties,std::default_delete<opentelemetry::v2::common::KeyValueProperties>>'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(31): warning C4275: non dll-interface class 'opentelemetry::v2::trace::Span' used as base for dll-interface class 'opentelemetry::v2::trace::NoopSpan'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/scope.h(16): note: see declaration of 'opentelemetry::v2::trace::Span'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(31): note: see declaration of 'opentelemetry::v2::trace::NoopSpan'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(81): warning C4251: 'opentelemetry::v2::trace::NoopSpan::tracer_': class 'std::shared_ptr<opentelemetry::v2::trace::Tracer>' needs to have dll-interface to be used by clients of class 'opentelemetry::v2::trace::NoopSpan'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/std/shared_ptr.h(17): note: see declaration of 'std::shared_ptr<opentelemetry::v2::trace::Tracer>'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(82): warning C4251: 'opentelemetry::v2::trace::NoopSpan::span_context_': class 'std::unique_ptr<opentelemetry::v2::trace::SpanContext,std::default_delete<opentelemetry::v2::trace::SpanContext>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v2::trace::NoopSpan'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v2::trace::SpanContext,std::default_delete<opentelemetry::v2::trace::SpanContext>>'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(88): warning C4275: non dll-interface class 'opentelemetry::v2::trace::Tracer' used as base for dll-interface class 'opentelemetry::v2::trace::NoopTracer'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/tracer_provider.h(16): note: see declaration of 'opentelemetry::v2::trace::Tracer'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(88): note: see declaration of 'opentelemetry::v2::trace::NoopTracer'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(90): warning C4251: 'std::enable_shared_from_this<opentelemetry::v2::trace::NoopTracer>::_Wptr': class 'std::weak_ptr<_Ty>' needs to have dll-interface to be used by clients of class 'std::enable_shared_from_this<opentelemetry::v2::trace::NoopTracer>'
        with
        [
            _Ty=opentelemetry::v2::trace::NoopTracer
        ]
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\memory(3143): note: see declaration of 'std::weak_ptr<_Ty>'
        with
        [
            _Ty=opentelemetry::v2::trace::NoopTracer
        ]
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(139): warning C4251: 'opentelemetry::v2::trace::NoopTracerProvider::tracer_': class 'std::shared_ptr<opentelemetry::v2::trace::Tracer>' needs to have dll-interface to be used by clients of class 'opentelemetry::v2::trace::NoopTracerProvider'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/std/shared_ptr.h(17): note: see declaration of 'std::shared_ptr<opentelemetry::v2::trace::Tracer>'
[372/410] Building CXX object examples\logs_simple\CMakeFiles\example_logs_simple.dir\main.cc.obj
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v2::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v2::common::KeyValueProperties,std::default_delete<opentelemetry::v2::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v2::trace::TraceState'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v2::common::KeyValueProperties,std::default_delete<opentelemetry::v2::common::KeyValueProperties>>'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(31): warning C4275: non dll-interface class 'opentelemetry::v2::trace::Span' used as base for dll-interface class 'opentelemetry::v2::trace::NoopSpan'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/scope.h(16): note: see declaration of 'opentelemetry::v2::trace::Span'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(31): note: see declaration of 'opentelemetry::v2::trace::NoopSpan'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(81): warning C4251: 'opentelemetry::v2::trace::NoopSpan::tracer_': class 'std::shared_ptr<opentelemetry::v2::trace::Tracer>' needs to have dll-interface to be used by clients of class 'opentelemetry::v2::trace::NoopSpan'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/std/shared_ptr.h(17): note: see declaration of 'std::shared_ptr<opentelemetry::v2::trace::Tracer>'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(82): warning C4251: 'opentelemetry::v2::trace::NoopSpan::span_context_': class 'std::unique_ptr<opentelemetry::v2::trace::SpanContext,std::default_delete<opentelemetry::v2::trace::SpanContext>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v2::trace::NoopSpan'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v2::trace::SpanContext,std::default_delete<opentelemetry::v2::trace::SpanContext>>'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(88): warning C4275: non dll-interface class 'opentelemetry::v2::trace::Tracer' used as base for dll-interface class 'opentelemetry::v2::trace::NoopTracer'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/tracer_provider.h(16): note: see declaration of 'opentelemetry::v2::trace::Tracer'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(88): note: see declaration of 'opentelemetry::v2::trace::NoopTracer'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(90): warning C4251: 'std::enable_shared_from_this<opentelemetry::v2::trace::NoopTracer>::_Wptr': class 'std::weak_ptr<_Ty>' needs to have dll-interface to be used by clients of class 'std::enable_shared_from_this<opentelemetry::v2::trace::NoopTracer>'
        with
        [
            _Ty=opentelemetry::v2::trace::NoopTracer
        ]
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\memory(3143): note: see declaration of 'std::weak_ptr<_Ty>'
        with
        [
            _Ty=opentelemetry::v2::trace::NoopTracer
        ]
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(139): warning C4251: 'opentelemetry::v2::trace::NoopTracerProvider::tracer_': class 'std::shared_ptr<opentelemetry::v2::trace::Tracer>' needs to have dll-interface to be used by clients of class 'opentelemetry::v2::trace::NoopTracerProvider'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/std/shared_ptr.h(17): note: see declaration of 'std::shared_ptr<opentelemetry::v2::trace::Tracer>'
[383/410] Building CXX object examples\otlp\CMakeFiles\example_otlp_http_metric.dir\http_metric_main.cc.obj
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_metric_exporter_options.h(37): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions::url': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_metric_exporter_options.h(59): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions::timeout': class 'std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\__msvc_chrono.hpp(638): note: see declaration of 'std::chrono::duration<std::chrono::system_clock::rep,std::chrono::system_clock::period>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_metric_exporter_options.h(62): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions::http_headers': class 'std::multimap<std::string,std::string,opentelemetry::v2::exporter::otlp::cmp_ic,std::allocator<std::pair<const std::string,std::string>>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_environment.h(141): note: see declaration of 'std::multimap<std::string,std::string,opentelemetry::v2::exporter::otlp::cmp_ic,std::allocator<std::pair<const std::string,std::string>>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_metric_exporter_options.h(79): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions::ssl_ca_cert_path': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_metric_exporter_options.h(82): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions::ssl_ca_cert_string': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_metric_exporter_options.h(85): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions::ssl_client_key_path': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_metric_exporter_options.h(88): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions::ssl_client_key_string': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_metric_exporter_options.h(91): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions::ssl_client_cert_path': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_metric_exporter_options.h(94): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions::ssl_client_cert_string': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_metric_exporter_options.h(99): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions::ssl_min_tls': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_metric_exporter_options.h(102): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions::ssl_max_tls': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_metric_exporter_options.h(105): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions::ssl_cipher': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\exporters\otlp\include\opentelemetry/exporters/otlp/otlp_http_metric_exporter_options.h(108): warning C4251: 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions::ssl_cipher_suite': class 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' needs to have dll-interface to be used by clients of struct 'opentelemetry::v2::exporter::otlp::OtlpHttpMetricExporterOptions'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\xstring(5119): note: see declaration of 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v2::trace::TraceState::kv_properties_': class 'std::unique_ptr<opentelemetry::v2::common::KeyValueProperties,std::default_delete<opentelemetry::v2::common::KeyValueProperties>>' needs to have dll-interface to be used by clients of class 'opentelemetry::v2::trace::TraceState'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/std/unique_ptr.h(17): note: see declaration of 'std::unique_ptr<opentelemetry::v2::common::KeyValueProperties,std::default_delete<opentelemetry::v2::common::KeyValueProperties>>'
C:\dev\otel-test2\opentelemetry-cpp\sdk\include\opentelemetry/sdk/metrics/meter_provider.h(33): warning C4275: non dll-interface class 'opentelemetry::v2::metrics::MeterProvider' used as base for dll-interface class 'opentelemetry::v2::sdk::metrics::MeterProvider'
C:\dev\otel-test2\opentelemetry-cpp\api\include\opentelemetry/metrics/provider.h(18): note: see declaration of 'opentelemetry::v2::metrics::MeterProvider'
C:\dev\otel-test2\opentelemetry-cpp\sdk\include\opentelemetry/sdk/metrics/meter_provider.h(33): note: see declaration of 'opentelemetry::v2::sdk::metrics::MeterProvider'
C:\dev\otel-test2\opentelemetry-cpp\sdk\include\opentelemetry/sdk/metrics/meter_provider.h(116): warning C4251: 'opentelemetry::v2::sdk::metrics::MeterProvider::context_': class 'std::shared_ptr<_Ty>' needs to have dll-interface to be used by clients of class 'opentelemetry::v2::sdk::metrics::MeterProvider'
        with
        [
            _Ty=opentelemetry::v2::sdk::metrics::MeterContext
        ]
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\memory(3135): note: see declaration of 'std::shared_ptr<_Ty>'
        with
        [
            _Ty=opentelemetry::v2::sdk::metrics::MeterContext
        ]
C:\dev\otel-test2\opentelemetry-cpp\sdk\include\opentelemetry/sdk/metrics/meter_provider.h(117): warning C4251: 'opentelemetry::v2::sdk::metrics::MeterProvider::lock_': class 'std::mutex' needs to have dll-interface to be used by clients of class 'opentelemetry::v2::sdk::metrics::MeterProvider'
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.37.32822\include\mutex(132): note: see declaration of 'std::mutex'
ninja: build stopped: subcommand failed.

@marcalff
Copy link
Member

-DWITH_ABI_VERSION_2=ON 
-DWITH_ABI_VERSION_1=OFF 

WITH_ABI_VERSION_2 is still experimental, unstable, and no abi v2 symbol are exported currently.

Please use abi v1 for now.

@Dangeroustuber
Copy link
Author

Should i make a seperate issue for the trace error i am having? The library has compiled just fine i think, but it gives me
Error LNK2019 unresolved external symbol error on SetTracerProvider.

@marcalff
Copy link
Member

We can use this issue number, no need to create a different one.

Is SetTracerProvider the only symbol missing at this point ?

Sorry I missed it in all the logs.

cc @perhapsmaple , if you want to provide the fix for the export (I still don't have windows).

@perhapsmaple
Copy link
Contributor

I'm able to build the DLL and run the example_simple program without any issues on my side. From what I can see, example_simple also uses the SetTracerProvider symbol:

trace_api::Provider::SetTracerProvider(provider);

Here is my CMake configuration for reference:

"cacheVariables": {
  "CMAKE_BUILD_TYPE": "Debug",
  "BUILD_TESTING": "ON",
  "WITH_STL":  "ON",
  "WITH_OTLP_GRPC": "ON",
  "WITH_OTLP_HTTP": "ON",
  "WITH_FUNC_TESTS": "ON",
  "WITH_EXAMPLES_HTTP": "ON",
  "WITH_EXAMPLES": "ON",
  "WITH_ABI_VERSION": "1",
  "CMAKE_CXX_STANDARD": "20",
  "OPENTELEMETRY_BUILD_DLL": "ON"
}

From what I can see in the CI, all three of the examples were built and ran successfully.

@Dangeroustuber
Copy link
Author

Okey. Then i will take a look at my setup some more. I am using it through a custom vcpkg registry and a custom port with visual studio.

This is the portfile:

#if(VCPKG_TARGET_IS_WINDOWS)
#    vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
#endif()

vcpkg_from_github(
    OUT_SOURCE_PATH SOURCE_PATH
    REPO open-telemetry/opentelemetry-cpp
    REF 3dfcf93c41bb1d487b3d4d1291791ea21a2a38ce
    SHA512 f1c7fc9dab777a15532d29ce83fab38a8323551f48f70ecbefd889a801810f8db00db7774984574cc82638dfbe9a0fb07a939bb8a5f96579dbc10660e1b68a35
    HEAD_REF main
    PATCHES
        # Use the compiler's default C++ version. Picking a version with
        # CMAKE_CXX_STANDARD is not needed as the Abseil port already picked
        # one and propagates that version across all its downstream deps.
        # use-default-cxx-version.patch
        # When compiling code generated by gRPC we need to link the gRPC library
        # too.
        add-missing-dependencies.patch
        # Missing find_dependency for Abseil
        add-missing-find-dependency.patch
        #add-missing-include-file.patch
)

vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
    FEATURES
        etw WITH_ETW
        zipkin WITH_ZIPKIN
        prometheus WITH_PROMETHEUS
        elasticsearch WITH_ELASTICSEARCH
        jaeger WITH_JAEGER
        #otlp WITH_OTLP
        otlp-http WITH_OTLP_HTTP
        zpages WITH_ZPAGES
        otlp-grpc WITH_OTLP_GRPC
)

# opentelemetry-proto is a third party submodule and opentelemetry-cpp release did not pack it.
if(WITH_OTLP_HTTP OR WITH_OTLP_GRPC)
    set(OTEL_PROTO_VERSION "0.20.0")
    vcpkg_download_distfile(ARCHIVE
        URLS "https://github.com/open-telemetry/opentelemetry-proto/archive/v${OTEL_PROTO_VERSION}.tar.gz"
        FILENAME "opentelemetry-proto-${OTEL_PROTO_VERSION}.tar.gz"
        SHA512 5fcc12000ad95a935d749cbcc7b6b9c70f6469d035788318b1c4c1e3b6d8f9804a44ffd1d17df250d85f4bf7f96972a02e5c04a40a4aeece835dc8e9d7ee6ff0
    )

    vcpkg_extract_source_archive(src ARCHIVE "${ARCHIVE}")
    file(REMOVE_RECURSE "${SOURCE_PATH}/third_party/opentelemetry-proto")
    file(COPY "${src}/." DESTINATION "${SOURCE_PATH}/third_party/opentelemetry-proto")
    # Create empty .git directory to prevent opentelemetry from cloning it during build time
    file(MAKE_DIRECTORY "${SOURCE_PATH}/third_party/opentelemetry-proto/.git")
    list(APPEND FEATURE_OPTIONS -DCMAKE_CXX_STANDARD=23)
    list(APPEND FEATURE_OPTIONS -DgRPC_CPP_PLUGIN_EXECUTABLE=${CURRENT_HOST_INSTALLED_DIR}/tools/grpc/grpc_cpp_plugin${VCPKG_HOST_EXECUTABLE_SUFFIX})
endif()

vcpkg_cmake_configure(
    SOURCE_PATH "${SOURCE_PATH}"
    OPTIONS
        -DBUILD_TESTING=OFF
        -DWITH_EXAMPLES=OFF
	-DWITH_FUNC_TESTS=OFF
	-DWITH_STL=ON
        #-DWITH_LOGS_PREVIEW=ON
        -DOPENTELEMETRY_INSTALL=ON
	-DOPENTELEMETRY_BUILD_DLL=ON
        -DWITH_ABSEIL=ON
        ${FEATURE_OPTIONS}
    MAYBE_UNUSED_VARIABLES
        WITH_OTLP_GRPC
)

vcpkg_cmake_install()
vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/${PORT})
vcpkg_copy_pdbs()

file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")

It does build successfully, so i'll have to take a closer look at what is going on. I will probably turn on for it to build tests first and see what happends.

@Dangeroustuber
Copy link
Author

Dangeroustuber commented Nov 28, 2023

Hello, i have been testing this for a bit now and i still don't think it works. It does build and the examples run successfully when i put the dll in the folder of the example. I've been running the simple trace example. One thing to note about the examples is that they don't define the DLL macro even when they are including an api header.

I still build it with ninja and these following options:

cmake -G Ninja .. 
-DCMAKE_BUILD_TYPE=Debug 
-DBUILD_TESTING=ON 
-DWITH_STL=ON 
-DWITH_OTLP_HTTP=ON 
-DWITH_FUNC_TESTS=ON 
-DWITH_EXAMPLES_HTTP=ON 
-DWITH_EXAMPLES=ON 
-DWITH_ABI_VERSION=1 
-DCMAKE_CXX_STANDARD=20 
-DOPENTELEMETRY_BUILD_DLL=ON

In visual studio i set the include paths for the api, sdk and the exporter for ostream. Then i put the DLL in the same folder as the exe. The c++ version is set to C++20 and i define some macros to deal with errors regarding std::result_of being deprecated.

The problem comes when i want to compile something such as this simple program with visual studo:

#define OPENTELEMETRY_BUILD_IMPORT_DLL

#include "opentelemetry/exporters/ostream/span_exporter_factory.h"
#include "opentelemetry/sdk/trace/exporter.h"
#include "opentelemetry/sdk/trace/processor.h"
#include "opentelemetry/sdk/trace/simple_processor_factory.h"
#include "opentelemetry/sdk/trace/tracer_provider_factory.h"
#include "opentelemetry/trace/provider.h"

namespace trace_api = opentelemetry::trace;
namespace trace_sdk = opentelemetry::sdk::trace;
namespace trace_exporter = opentelemetry::exporter::trace;

int main() {
	auto exporter = trace_exporter::OStreamSpanExporterFactory::Create();
	auto processor = trace_sdk::SimpleSpanProcessorFactory::Create(std::move(exporter));
	std::shared_ptr<opentelemetry::trace::TracerProvider> provider = trace_sdk::TracerProviderFactory::Create(std::move(processor));

	trace_api::Provider::SetTracerProvider(provider);
}

For this i get the following list of errors:

Error	LNK2019	unresolved external symbol "__declspec(dllimport) public: static class std::unique_ptr<class opentelemetry::v1::sdk::trace::SpanExporter,struct std::default_delete<class opentelemetry::v1::sdk::trace::SpanExporter> > __cdecl opentelemetry::v1::exporter::trace::OStreamSpanExporterFactory::Create(void)" (__imp_?Create@OStreamSpanExporterFactory@trace@exporter@v1@opentelemetry@@SA?AV?$unique_ptr@VSpanExporter@trace@sdk@v1@opentelemetry@@U?$default_delete@VSpanExporter@trace@sdk@v1@opentelemetry@@@std@@@std@@XZ) referenced in function main	test	C:\Users\elvari\source\repos\test\test.obj	1		
Error	LNK2019	unresolved external symbol "__declspec(dllimport) public: static class std::unique_ptr<class opentelemetry::v1::sdk::trace::SpanProcessor,struct std::default_delete<class opentelemetry::v1::sdk::trace::SpanProcessor> > __cdecl opentelemetry::v1::sdk::trace::SimpleSpanProcessorFactory::Create(class std::unique_ptr<class opentelemetry::v1::sdk::trace::SpanExporter,struct std::default_delete<class opentelemetry::v1::sdk::trace::SpanExporter> > &&)" (__imp_?Create@SimpleSpanProcessorFactory@trace@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VSpanProcessor@trace@sdk@v1@opentelemetry@@U?$default_delete@VSpanProcessor@trace@sdk@v1@opentelemetry@@@std@@@std@@$$QEAV?$unique_ptr@VSpanExporter@trace@sdk@v1@opentelemetry@@U?$default_delete@VSpanExporter@trace@sdk@v1@opentelemetry@@@std@@@7@@Z) referenced in function main	test	C:\Users\elvari\source\repos\test\test.obj	1		
Error	LNK2019	unresolved external symbol "__declspec(dllimport) public: static class std::unique_ptr<class opentelemetry::v1::trace::TracerProvider,struct std::default_delete<class opentelemetry::v1::trace::TracerProvider> > __cdecl opentelemetry::v1::sdk::trace::TracerProviderFactory::Create(class std::unique_ptr<class opentelemetry::v1::sdk::trace::SpanProcessor,struct std::default_delete<class opentelemetry::v1::sdk::trace::SpanProcessor> >)" (__imp_?Create@TracerProviderFactory@trace@sdk@v1@opentelemetry@@SA?AV?$unique_ptr@VTracerProvider@trace@v1@opentelemetry@@U?$default_delete@VTracerProvider@trace@v1@opentelemetry@@@std@@@std@@V?$unique_ptr@VSpanProcessor@trace@sdk@v1@opentelemetry@@U?$default_delete@VSpanProcessor@trace@sdk@v1@opentelemetry@@@std@@@7@@Z) referenced in function main	test	C:\Users\elvari\source\repos\test\test.obj	1		
Error	LNK2019	unresolved external symbol "__declspec(dllimport) public: static void __cdecl opentelemetry::v1::trace::Provider::SetTracerProvider(class opentelemetry::v1::nostd::shared_ptr<class opentelemetry::v1::trace::TracerProvider>)" (__imp_?SetTracerProvider@Provider@trace@v1@opentelemetry@@SAXV?$shared_ptr@VTracerProvider@trace@v1@opentelemetry@@@nostd@34@@Z) referenced in function main	test	C:\Users\elvari\source\repos\test\test.obj	1		

Any help is appreciated. I don't quite understand what is going on here (considering the examples built by ninja build and run). If someone else could try this similar setup and see what happends that would be great! Let me know if i have forgotten a step to getting this to work or i am testing it wrong in any way.

@ThomsonTan ThomsonTan self-assigned this Nov 29, 2023
@Dangeroustuber
Copy link
Author

Update:

We can use this issue number, no need to create a different one.

Is SetTracerProvider the only symbol missing at this point ?

Sorry I missed it in all the logs.

cc @perhapsmaple , if you want to provide the fix for the export (I still don't have windows).

After some more testing, i think the only missing actual symbol is SetTracerProvider family of functions (setlogger, setmetric). Those are not present in the opentelemetry_cpp.src file in the ext/dll folder on the master branch. That would fix the issue i'm having i believe.

@meastp
Copy link
Contributor

meastp commented Dec 19, 2023

@ThomsonTan Since PR #2450 was merged recently, would it be possible to also add a pipeline defining OPENTELEMETRY_BUILD_DLL=ON that ensures the examples/tests actually build/run successfully? :)

We are still struggling with this issue, and this information (whether it does build and run in CI) would be very useful.

@ThomsonTan
Copy link
Contributor

ThomsonTan commented Dec 20, 2023

@meastp we do have pipeline which ensures examples/tests run successfully for DLL build as below. Probably the it is that the function you listed like SetTracerProvider are not used in the examples. Or are you looking for some different configuration in the CI run?

examples\simple\Debug\example_simple.exe

Update: I saw C++ 20 is mentioned above. I'll add a new CI run for C++ 20 with DLL build.

@meastp
Copy link
Contributor

meastp commented Dec 27, 2023

@ThomsonTan @marcalff @perhapsmaple I still think the link error we get is correct. Investigated some more, and think I found the culprit - see #2471. :)

@meastp
Copy link
Contributor

meastp commented Jan 3, 2024

@ThomsonTan @marcalff @perhapsmaple Finally, I found the reason for the build failure: missing definition of OPENTELEMETRY_STL_VERSION=2023 client-side. This is invisible when building otel-cpp because we have set WITH_STL=ON. This took quite a while to figure out, lots of blind alleys :)

Hopefully, all build issues are resolved now.

?SetTracerProvider@Provider@trace@v1@opentelemetry@@SAXV?$shared_ptr@VTracerProvider@trace@v1@opentelemetry@@@std@@@Z
?SetTracerProvider@Provider@trace@v1@opentelemetry@@SAXV?$shared_ptr@VTracerProvider@trace@v1@opentelemetry@@@nostd@34@@Z

C:\Program Files\Microsoft Visual Studio\2022\Enterprise>undname /?
Microsoft (R) C++ Name Undecorator
Copyright (C) Microsoft Corporation. All rights reserved.

Usage: undname [flags] fname [fname...]
   or: undname [flags] file

C:\Program Files\Microsoft Visual Studio\2022\Enterprise>undname ?SetTracerProvider@Provider@trace@v1@opentelemetry@@SAXV?$shared_ptr@VTracerProvider@trace@v1@opentelemetry@@@std@@@Z
Microsoft (R) C++ Name Undecorator
Copyright (C) Microsoft Corporation. All rights reserved.

Undecoration of :- "?SetTracerProvider@Provider@trace@v1@opentelemetry@@SAXV?$shared_ptr@VTracerProvider@trace@v1@opentelemetry@@@std@@@Z"
is :- "public: static void __cdecl opentelemetry::v1::trace::Provider::SetTracerProvider(class std::shared_ptr<class opentelemetry::v1::trace::TracerProvider>)"


C:\Program Files\Microsoft Visual Studio\2022\Enterprise>undname ?SetTracerProvider@Provider@trace@v1@opentelemetry@@SAXV?$shared_ptr@VTracerProvider@trace@v1@opentelemetry@@@nostd@34@@Z
Microsoft (R) C++ Name Undecorator
Copyright (C) Microsoft Corporation. All rights reserved.

Undecoration of :- "?SetTracerProvider@Provider@trace@v1@opentelemetry@@SAXV?$shared_ptr@VTracerProvider@trace@v1@opentelemetry@@@nostd@34@@Z"
is :- "public: static void __cdecl opentelemetry::v1::trace::Provider::SetTracerProvider(class opentelemetry::v1::nostd::shared_ptr<class opentelemetry::v1::trace::TracerProvider>)"


C:\Program Files\Microsoft Visual Studio\2022\Enterprise>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants