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

Building as Win32 DLL failure #2167

Closed
cnbleu opened this issue May 31, 2023 · 11 comments · Fixed by #2190 or #2264
Closed

Building as Win32 DLL failure #2167

cnbleu opened this issue May 31, 2023 · 11 comments · Fixed by #2190 or #2264
Assignees
Labels
bug Something isn't working

Comments

@cnbleu
Copy link

cnbleu commented May 31, 2023

Hey guys,
trying to build the opentelemetry-cpp project on Windows 10 with Win32 arch and getting this error:

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)

Follow is likes my build command: ()

cmake  -G "Visual Studio 16 Win32" -DOPENTELEMETRY_BUILD_DLL=ON -DOPENTELEMETRY_INSTALL=ON -DWITH_EXAMPLES=OFF -DBUILD_TESTING=OFF ..

Can you please help me ?

@cnbleu cnbleu added the bug Something isn't working label May 31, 2023
@VictorSFaria
Copy link

Same error here

@VictorSFaria
Copy link

Adding some context, all the referenced packages are compiled successful.

@cnbleu
Copy link
Author

cnbleu commented Jun 2, 2023

Hi @VictorSFaria ,can you share your code?

@VictorSFaria
Copy link

I just try to generate a dll, with command:
cmake -DOPENTELEMETRY_BUILD_DLL=ON -DBUILD_PACKAGE=ON ..

@ThomsonTan
Copy link
Contributor

I just try to generate a dll, with command: cmake -DOPENTELEMETRY_BUILD_DLL=ON -DBUILD_PACKAGE=ON ..

Can you please share the error log?

@VictorSFaria
Copy link

:\Desenvolvimento\opentelemetry-cpp\source\opentelemetry-cpp\api\include\opentelemetry/common/spin_lock_mutex.h(132): warning C4522: 'opentelemetry::v1::common::SpinLockMutex': vários operadores de atribuição especificados
6>C:\Desenvolvimento\opentelemetry-cpp\source\opentelemetry-cpp\api\include\opentelemetry/trace/trace_state.h(315): warning C4251: 'opentelemetry::v1::trace::TraceState::kv_properties_': class 'opentelemetry::v1::nostd::unique_ptropentelemetry::v1::common::KeyValueProperties' precisa ter dll-interface para ser usado por clientes de class 'opentelemetry::v1::trace::TraceState'
6>C:\Desenvolvimento\opentelemetry-cpp\source\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(72): warning C4251: 'opentelemetry::v1::trace::NoopSpan::tracer_': class 'std::shared_ptropentelemetry::v1::trace::Tracer' precisa ter dll-interface para ser usado por clientes de class 'opentelemetry::v1::trace::NoopSpan'
6>C:\Desenvolvimento\opentelemetry-cpp\source\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(73): warning C4251: 'opentelemetry::v1::trace::NoopSpan::span_context_': class 'opentelemetry::v1::nostd::unique_ptr' precisa ter dll-interface para ser usado por clientes de class 'opentelemetry::v1::trace::NoopSpan'
6>C:\Desenvolvimento\opentelemetry-cpp\source\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(81): warning C4251: 'std::enable_shared_from_thisopentelemetry::v1::trace::NoopTracer::_Wptr': class 'std::weak_ptr<Ty>' precisa ter dll-interface para ser usado por clientes de class 'std::enable_shared_from_thisopentelemetry::v1::trace::NoopTracer'
6>C:\Desenvolvimento\opentelemetry-cpp\source\opentelemetry-cpp\api\include\opentelemetry/trace/noop.h(119): warning C4251: 'opentelemetry::v1::trace::NoopTracerProvider::tracer
': class 'opentelemetry::v1::nostd::shared_ptropentelemetry::v1::trace::Tracer' precisa ter dll-interface para ser usado por clientes de class 'opentelemetry::v1::trace::NoopTracerProvider'
6>opentelemetry_cpp.exp : error LNK2001: símbolos externos indefinidos "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 > &&)" (?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)
6>C:\Desenvolvimento\opentelemetry-cpp\source\opentelemetry-cpp\build\ext\src\dll\Release\opentelemetry_cpp.dll : fatal error LNK1120: 1 externo não resolvidos
6> 6 Aviso(s)
6> 2 Erro(s)

@ThomsonTan
Copy link
Contributor

@VictorSFaria which version of Visual Studio is used which produces the above error message?

@VictorSFaria
Copy link

2017

@VictorSFaria
Copy link

#2177 didn't solve the problem, I'm having the following error:

opentelemetry_cpp.exp : error LNK2001: símbolos externos indefinidos "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 > &&)" (?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)
1>C:\Desenvolvimento\opentelemetry-cpp\source\opentelemetry-cpp\build\ext\src\dll\Debug\opentelemetry_cpp.dll : fatal error LNK1120: 1 externo não

In VS 2017 making the project with the command:

cmake -DOPENTELEMETRY_BUILD_DLL=ON -DOPENTELEMETRY_INSTALL=ON -DWITH_EXAMPLES=OFF -DBUILD_TESTING=OFF ..

@ThomsonTan
Copy link
Contributor

@VictorSFaria I just tried VS2017 with the same cmake options, and got opentelemetry_cpp.dll produced successfully.

But I am building x64, not 32-bit x86. Are you building x86 version of the DLL? If so, can you switch to x64 or x86 is still necessary?

@ThomsonTan
Copy link
Contributor

@VictorSFaria @cnbleu please check if the DLL build was fixed in the latest commit from main branch.

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
3 participants