[llvm-dev] Using LLD to link against third-party libraries? How? (original) (raw)

Osman Zakir via llvm-dev llvm-dev at lists.llvm.org
Tue Dec 11 12:43:33 PST 2018


In my code here https://github.com/DragonOsman/currency_converter , I used C++17 and managed to get it to work (though I'm only using std::map::insert_or_assign() from C++17). And I'm using Windows, so I shouldn't use LDFLAGS or CXXFLAGS as environment variables. I'll use them directly on the compiler command line instead. The libraries I need to link against are C:/boost_1_68_0/stage/lib/libboost_system-vc141-mt-x64-1_68.lib and C:/Jinja2Cpp/install_x64/lib/static/jinja2cpp.lib.

I tried to build it with this flag: " clang++ -std=c++17 -Wall -pedantic -D_SILENCE_CXX17_ADAPTOR_TYPEDEFS_DEPRECATION_WARNING -Dvariant_CONFIG_SELECT_VARIANT=variant_VARIANT_NONSTD -D_SILENCE_CXX17_ALLOCATOR_VOID_DEPRECATION_WARNING -D_CRT_SECURE_NO_WARNINGS -D_WINSOCK_DEPRECATED_NO_WARNINGS -D_WIN32 -D_WIN32_WINDOWS -D_NDEBUG -fexceptions -IC:/Jinja2Cpp/install_x64/include -IC:/json/single_include -IC:/boost_1_68_0 -LC:/boost_1_68_0/stage/lib/libboost_system-vc141-mt-x64-1_68.lib -LC:/Jinja2Cpp/install_x64/lib/static/jinja2cpp.lib currency_converter.cpp -o currency_converter.exe " And I got these warnings and errors from LLD:

" lld-link: warning: C:\Users\Osman\AppData\Local\Temp\currency_converter-264ae1.o: locally defined symbol imported: __std_terminate (defined in libvcruntime.lib(ehhelpers.obj)) [LNK4217] lld-link: error: undefined symbol: "public: __cdecl jinja2::Template::Template(class jinja2::TemplateEnv *)" (??0Template at jinja2@@QEAA at PEAVTemplateEnv@1@@Z)​

_referenced by C:\Users\Osman\AppData\Local\Temp\currencyconverter-264ae1.o:("void cdecl handlerequest<struct boost::beast::http::basicstringbody<char, struct std::chartraits, class std::allocator>, class std::allocator, struct serversession::sendlambda &>(class boost::basicstringview<char, struct std::chartraits>, struct boost::beast::http::message<1, struct boost::beast::http::basicstringbody<char, struct std::chartraits, class std::allocator>, class boost::beast::http::basicfields<class std::allocator>> &&, struct serversession::sendlambda &, char const *, char const *)" (??$handlerequest at U?$basicstringbody at DU?$chartraits at D@std@@V?$allocator at D@2@@http at beast@boost@@V?$allocator at D@std@@AEAUsendlambda at serversession@@@@YAXV?$basicstringview at DU?$chartraits at D@std@@@boost@@$$QEAU?$message@$00U?$basicstringbody at DU?$chartraits at D@std@@V?$allocator at D@2@@http at beast@boost@@V?$basicfields at V?$allocator at D@std@@@234@@http at beast@1 at AEAUsendlambda@serversession@@PEBD3 at Z))​ ​ lld-link: error: undefined symbol: "public: class nonstd::expected_lite::expected<void, class jinja2::ErrorInfoTpl> __cdecl jinja2::Template::LoadFromFile(class std::basic_string<char, struct std::char_traits, class std::allocator> const &)" (?LoadFromFile at Template@jinja2@@QEAA?AV?$expected at XV?$ErrorInfoTpl at D@jinja2@@@expected_lite at nonstd@@AEBV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@@Z)​ _referenced by C:\Users\Osman\AppData\Local\Temp\currencyconverter-264ae1.o:("void cdecl handlerequest<struct boost::beast::http::basicstringbody<char, struct std::chartraits, class std::allocator>, class std::allocator, struct serversession::sendlambda &>(class boost::basicstringview<char, struct std::chartraits>, struct boost::beast::http::message<1, struct boost::beast::http::basicstringbody<char, struct std::chartraits, class std::allocator>, class boost::beast::http::basicfields<class std::allocator>> &&, struct serversession::sendlambda &, char const *, char const *)" (??$handlerequest at U?$basicstringbody at DU?$chartraits at D@std@@V?$allocator at D@2@@http at beast@boost@@V?$allocator at D@std@@AEAUsendlambda at serversession@@@@YAXV?$basicstringview at DU?$chartraits at D@std@@@boost@@$$QEAU?$message@$00U?$basicstringbody at DU?$chartraits at D@std@@V?$allocator at D@2@@http at beast@boost@@V?$basicfields at V?$allocator at D@std@@@234@@http at beast@1 at AEAUsendlambda@serversession@@PEBD3 at Z))​ ​ lld-link: error: undefined symbol: "public: class std::basic_string<char, struct std::char_traits, class std::allocator> __cdecl jinja2::Template::RenderAsString(class std::unordered_map<class std::basic_string<char, struct std::char_traits, class std::allocator>, class jinja2::Value, struct std::hash<class std::basic_string<char, struct std::char_traits, class std::allocator>>, struct std::equal_to<class std::basic_string<char, struct std::char_traits, class std::allocator>>, class std::allocator<struct std::pair<class std::basic_string<char, struct std::char_traits, class std::allocator> const, class jinja2::Value>>> const &)" (?RenderAsString at Template@jinja2@@QEAA?AV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@AEBV?$unordered_map at V?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@VValue at jinja2@@U?$hash at V?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@@2 at U?$equal_to at V?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@@2 at V?$allocator at U?$pair@$$CBV?$basic_string at DU?$char_traits at D@std@@V?$allocator at D@2@@std@@VValue at jinja2@@@std@@@2@@4@@Z)​ _referenced by C:\Users\Osman\AppData\Local\Temp\currencyconverter-264ae1.o:("void cdecl handlerequest<struct boost::beast::http::basicstringbody<char, struct std::chartraits, class std::allocator>, class std::allocator, struct serversession::sendlambda &>(class boost::basicstringview<char, struct std::chartraits>, struct boost::beast::http::message<1, struct boost::beast::http::basicstringbody<char, struct std::chartraits, class std::allocator>, class boost::beast::http::basicfields<class std::allocator>> &&, struct serversession::sendlambda &, char const *, char const *)" (??$handlerequest at U?$basicstringbody at DU?$chartraits at D@std@@V?$allocator at D@2@@http at beast@boost@@V?$allocator at D@std@@AEAUsendlambda at serversession@@@@YAXV?$basicstringview at DU?$chartraits at D@std@@@boost@@$$QEAU?$message@$00U?$basicstringbody at DU?$chartraits at D@std@@V?$allocator at D@2@@http at beast@boost@@V?$basicfields at V?$allocator at D@std@@@234@@http at beast@1 at AEAUsendlambda@serversession@@PEBD3 at Z))​ _referenced by C:\Users\Osman\AppData\Local\Temp\currencyconverter-264ae1.o:("void cdecl handlerequest<struct boost::beast::http::basicstringbody<char, struct std::chartraits, class std::allocator>, class std::allocator, struct serversession::sendlambda &>(class boost::basicstringview<char, struct std::chartraits>, struct boost::beast::http::message<1, struct boost::beast::http::basicstringbody<char, struct std::chartraits, class std::allocator>, class boost::beast::http::basicfields<class std::allocator>> &&, struct serversession::sendlambda &, char const *, char const *)" (??$handlerequest at U?$basicstringbody at DU?$chartraits at D@std@@V?$allocator at D@2@@http at beast@boost@@V?$allocator at D@std@@AEAUsendlambda at serversession@@@@YAXV?$basicstringview at DU?$chartraits at D@std@@@boost@@$$QEAU?$message@$00U?$basicstringbody at DU?$chartraits at D@std@@V?$allocator at D@2@@http at beast@boost@@V?$basicfields at V?$allocator at D@std@@@234@@http at beast@1 at AEAUsendlambda@serversession@@PEBD3 at Z))​ ​ lld-link: error: undefined symbol: "public: __cdecl jinja2::Template::~Template(void)" (??1Template at jinja2@@QEAA at XZ)​ _referenced by C:\Users\Osman\AppData\Local\Temp\currencyconverter-264ae1.o:("void cdecl handlerequest<struct boost::beast::http::basicstringbody<char, struct std::chartraits, class std::allocator>, class std::allocator, struct serversession::sendlambda &>(class boost::basicstringview<char, struct std::chartraits>, struct boost::beast::http::message<1, struct boost::beast::http::basicstringbody<char, struct std::chartraits, class std::allocator>, class boost::beast::http::basicfields<class std::allocator>> &&, struct serversession::sendlambda &, char const *, char const *)" (??$handlerequest at U?$basicstringbody at DU?$chartraits at D@std@@V?$allocator at D@2@@http at beast@boost@@V?$allocator at D@std@@AEAUsendlambda at serversession@@@@YAXV?$basicstringview at DU?$chartraits at D@std@@@boost@@$$QEAU?$message@$00U?$basicstringbody at DU?$chartraits at D@std@@V?$allocator at D@2@@http at beast@boost@@V?$basicfields at V?$allocator at D@std@@@234@@http at beast@1 at AEAUsendlambda@serversession@@PEBD3 at Z))​ referenced by C:\Users\Osman\AppData\Local\Temp\currencyconverter-264ae1.o:("int void _cdecl handlerequest<struct boost::beast::http::basicstringbody<char, struct std::chartraits<char>, class std::allocator<char>>, class std::allocator<char>, struct serversession::sendlambda &>(class boost::basicstringview<char, struct std::chartraits<char>>, struct basicstringview<char, struct std::chartraits<char>>::beast::http::message<1, struct boost::beast::http::basicstringbody<char, struct std::chartraits<char>, class std::allocator<char>>, class boost::beast::http::basicfields<class std::allocator<char>>> &&, struct serversession::sendlambda &, char const *, char const *)'::1'::dtor$114" (?dtor$114@?0???$handlerequest at U?$basicstringbody at DU?$chartraits at D@std@@V?$allocator at D@2@@http at beast@boost@@V?$allocator at D@std@@AEAUsendlambda at serversession@@@@YAXV?$basicstringview at DU?$chartraits at D@std@@@boost@@$$QEAU?$message@$00U?$basicstringbody at DU?$chartraits at D@std@@V?$allocator at D@2@@http at beast@boost@@V?$basicfields at V?$allocator at D@std@@@234@@http at beast@1 at AEAUsendlambda@serversession@@PEBD3 at Z@4HA))​ ​ lld-link: warning: C:\Users\Osman\AppData\Local\Temp\currency_converter-264ae1.o: locally defined symbol imported: _CxxThrowException (defined in libvcruntime.lib(throw.obj)) [LNK4217]​ lld-link: error: undefined symbol: "class boost::system::error_category const & __cdecl boost::system::detail::system_category_ncx(void)" (?system_category_ncx at detail@system at boost@@YAAEBVerror_category at 23@XZ)​ _referenced by C:\Users\Osman\AppData\Local\Temp\currencyconverter-264ae1.o:("class boost::system::errorcategory const & cdecl boost::system::systemcategory(void)" (?systemcategory at system@boost@@YAAEBVerrorcategory at 12@XZ))​ ​ lld-link: warning: C:\Users\Osman\AppData\Local\Temp\currency_converter-264ae1.o: locally defined symbol imported: __RTDynamicCast (defined in libvcruntime.lib(rtti.obj)) [LNK4217]​ lld-link: error: undefined symbol: "class boost::system::error_category const & __cdecl boost::system::detail::generic_category_ncx(void)" (?generic_category_ncx at detail@system at boost@@YAAEBVerror_category at 23@XZ)​ _referenced by C:\Users\Osman\AppData\Local\Temp\currencyconverter-264ae1.o:("class boost::system::errorcategory const & cdecl boost::system::genericcategory(void)" (?genericcategory at system@boost@@YAAEBVerrorcategory at 12@XZ))​ clang++: error: linker command failed with exit code 1 (use -v to see invocation) " [https://avatars0.githubusercontent.com/u/18173932?s=400&v=4]<https://github.com/DragonOsman/currency_converter>

GitHub - DragonOsman/currency_converter: Application for Computer Science course<https://github.com/DragonOsman/currency_converter> Google Maps + Currency Converter Web Application. Application for Computer Science course. This is a currency converter web application with the frontend and a backend. github.com

-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20181211/ff7dc1a1/attachment.html>



More information about the llvm-dev mailing list