llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
28.77k stars 11.9k forks source link

Undefined symbol boost::archive::archive_exception #111889

Open zoharl3 opened 2 weeks ago

zoharl3 commented 2 weeks ago

https://stackoverflow.com/questions/79073953/clang-undefined-symbol-boostarchivearchive-exception

sehe commented 2 weeks ago

This is not a valid problem description. Also, the linked post indicates this would be a duplicate of #58806

zoharl3 commented 2 weeks ago

I'm building the demo from the tutorial

https://www.boost.org/doc/libs/1_85_0/libs/serialization/doc/tutorial.html

I created the project using cmake for VS22 with clang-cl.exe, and the cmakefile.txt has

find_package( Boost REQUIRED COMPONENTS serialization )
if(Boost_FOUND)
    message( "Boost found: ${Boost_INCLUDE_DIRS}" )
    target_include_directories( ${PROJECT_NAME} PRIVATE ${Boost_INCLUDE_DIRS} )
    target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES})
endif()

and I verified that the project is linked against ..\vcpkg_installed\x64-windows\debug\lib\boost_serialization-vc143-mt-gd-x64-1_85.lib.

I get two linker errors:

lld-link : error : undefined symbol: __declspec(dllimport) public: void __cdecl boost::archive::archive_exception::`vbase dtor'(void)
lld-link : error : undefined symbol: public: void __cdecl boost::archive::archive_exception::`vbase dtor'(void)

When building with cl.exe, there are no errors.