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

Unable to Build on Windows and LLVM 17 #217

Closed
DeveloperPaul123 opened this issue Dec 11, 2023 · 23 comments
Closed

Unable to Build on Windows and LLVM 17 #217

DeveloperPaul123 opened this issue Dec 11, 2023 · 23 comments

Comments

@DeveloperPaul123
Copy link

I've been trying to use clang-uml with some of our projects, but we use LLVM 17.x. After following the build instructions found here, I get the errors below when trying to build clang-uml (clang-umllib builds fine).

Versions
clang-uml : 0.4.2
LLVM : 17.0.6
CMake : 3.27.9
Visual Studio : 17.8.3

Error details

    Error LNK2019: unresolved external symbol "public: void __cdecl clang::ast_matchers::internal::BoundNodesTreeBuilder::addMatch(class clang::ast_matchers::internal::BoundNodesTreeBuilder const &)" (?addMatch@BoundNodesTreeBuilder@internal@ast_matchers@clang@@QEAAXAEBV1234@@Z) referenced in function "private: bool __cdecl clang::ast_matchers::MatchDescendantVisitor::match<class clang::Stmt>(class clang::Stmt const &)" (??$match@VStmt@clang@@@MatchDescendantVisitor@ast_matchers@clang@@AEAA_NAEBVStmt@2@@Z)
    Error LNK2019: unresolved external symbol "class clang::ast_matchers::internal::VariadicAllOfMatcher<class clang::Stmt> const clang::ast_matchers::stmt" (?stmt@ast_matchers@clang@@3V?$VariadicAllOfMatcher@VStmt@clang@@@internal@12@B) referenced in function "class std::tuple<class std::vector<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> > > >,class std::vector<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> > > >,class `anonymous namespace'::DeclUseTracker> __cdecl findGadgets(class clang::Decl const *,class clang::UnsafeBufferUsageHandler const &,bool)" (?findGadgets@@YA?AV?$tuple@V?$vector@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@@2@@std@@V?$vector@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@@2@@2@VDeclUseTracker@?A0xeafd01d6@@@std@@PEBVDecl@clang@@AEBVUnsafeBufferUsageHandler@4@_N@Z)
    Error LNK2019: unresolved external symbol "class clang::ast_matchers::internal::VariadicDynCastAllOfMatcher<class clang::Stmt,class clang::DeclStmt> const clang::ast_matchers::declStmt" (?declStmt@ast_matchers@clang@@3V?$VariadicDynCastAllOfMatcher@VStmt@clang@@VDeclStmt@2@@internal@12@B) referenced in function "class std::tuple<class std::vector<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> > > >,class std::vector<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> > > >,class `anonymous namespace'::DeclUseTracker> __cdecl findGadgets(class clang::Decl const *,class clang::UnsafeBufferUsageHandler const &,bool)" (?findGadgets@@YA?AV?$tuple@V?$vector@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@@2@@std@@V?$vector@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@@2@@2@VDeclUseTracker@?A0xeafd01d6@@@std@@PEBVDecl@clang@@AEBVUnsafeBufferUsageHandler@4@_N@Z)
    Error LNK2019: unresolved external symbol "class clang::ast_matchers::internal::VariadicDynCastAllOfMatcher<class clang::Stmt,class clang::CallExpr> const clang::ast_matchers::callExpr" (?callExpr@ast_matchers@clang@@3V?$VariadicDynCastAllOfMatcher@VStmt@clang@@VCallExpr@2@@internal@12@B) referenced in function "class clang::ast_matchers::internal::Matcher<class clang::Stmt> __cdecl clang::ast_matchers::isInUnspecifiedPointerContext(class clang::ast_matchers::internal::Matcher<class clang::Stmt>)" (?isInUnspecifiedPointerContext@ast_matchers@clang@@YA?AV?$Matcher@VStmt@clang@@@internal@12@V3412@@Z)
    Error LNK2001: unresolved external symbol "class clang::ast_matchers::internal::VariadicDynCastAllOfMatcher<class clang::Stmt,class clang::CXXConstructExpr> const clang::ast_matchers::cxxConstructExpr" (?cxxConstructExpr@ast_matchers@clang@@3V?$VariadicDynCastAllOfMatcher@VStmt@clang@@VCXXConstructExpr@2@@internal@12@B)
    Error LNK2019: unresolved external symbol "class clang::ast_matchers::internal::VariadicDynCastAllOfMatcher<class clang::Stmt,class clang::ArraySubscriptExpr> const clang::ast_matchers::arraySubscriptExpr" (?arraySubscriptExpr@ast_matchers@clang@@3V?$VariadicDynCastAllOfMatcher@VStmt@clang@@VArraySubscriptExpr@2@@internal@12@B) referenced in function "public: static class clang::ast_matchers::internal::BindableMatcher<class clang::Stmt> __cdecl `anonymous namespace'::ArraySubscriptGadget::matcher(void)" (?matcher@ArraySubscriptGadget@?A0xeafd01d6@@SA?AV?$BindableMatcher@VStmt@clang@@@internal@ast_matchers@clang@@XZ)
    Error LNK2001: unresolved external symbol "class clang::ast_matchers::internal::VariadicDynCastAllOfMatcher<class clang::Stmt,class clang::CXXOperatorCallExpr> const clang::ast_matchers::cxxOperatorCallExpr" (?cxxOperatorCallExpr@ast_matchers@clang@@3V?$VariadicDynCastAllOfMatcher@VStmt@clang@@VCXXOperatorCallExpr@2@@internal@12@B)
    Error LNK2001: unresolved external symbol "class clang::ast_matchers::internal::VariadicDynCastAllOfMatcher<class clang::Decl,class clang::FunctionDecl> const clang::ast_matchers::functionDecl" (?functionDecl@ast_matchers@clang@@3V?$VariadicDynCastAllOfMatcher@VDecl@clang@@VFunctionDecl@2@@internal@12@B)
    Error LNK2001: unresolved external symbol "class clang::ast_matchers::internal::VariadicDynCastAllOfMatcher<class clang::Stmt,class clang::Expr> const clang::ast_matchers::expr" (?expr@ast_matchers@clang@@3V?$VariadicDynCastAllOfMatcher@VStmt@clang@@VExpr@2@@internal@12@B)
    Error LNK2019: unresolved external symbol "class clang::ast_matchers::internal::VariadicDynCastAllOfMatcher<class clang::Stmt,class clang::BinaryOperator> const clang::ast_matchers::binaryOperator" (?binaryOperator@ast_matchers@clang@@3V?$VariadicDynCastAllOfMatcher@VStmt@clang@@VBinaryOperator@2@@internal@12@B) referenced in function "class clang::ast_matchers::internal::Matcher<class clang::Stmt> __cdecl clang::ast_matchers::isInUnspecifiedPointerContext(class clang::ast_matchers::internal::Matcher<class clang::Stmt>)" (?isInUnspecifiedPointerContext@ast_matchers@clang@@YA?AV?$Matcher@VStmt@clang@@@internal@12@V3412@@Z)
    Error LNK2019: unresolved external symbol "class clang::ast_matchers::internal::VariadicDynCastAllOfMatcher<class clang::Stmt,class clang::UnaryOperator> const clang::ast_matchers::unaryOperator" (?unaryOperator@ast_matchers@clang@@3V?$VariadicDynCastAllOfMatcher@VStmt@clang@@VUnaryOperator@2@@internal@12@B) referenced in function "public: static class clang::ast_matchers::internal::BindableMatcher<class clang::Stmt> __cdecl DerefSimplePtrArithFixableGadget::matcher(void)" (?matcher@DerefSimplePtrArithFixableGadget@@SA?AV?$BindableMatcher@VStmt@clang@@@internal@ast_matchers@clang@@XZ)
    Error LNK2019: unresolved external symbol "struct clang::ast_matchers::internal::VariadicOperatorMatcherFunc<2,4294967295> const clang::ast_matchers::eachOf" (?eachOf@ast_matchers@clang@@3U?$VariadicOperatorMatcherFunc@$01$0PPPPPPPP@@internal@12@B) referenced in function "class std::tuple<class std::vector<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> > > >,class std::vector<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> > > >,class `anonymous namespace'::DeclUseTracker> __cdecl findGadgets(class clang::Decl const *,class clang::UnsafeBufferUsageHandler const &,bool)" (?findGadgets@@YA?AV?$tuple@V?$vector@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@@2@@std@@V?$vector@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@@2@@2@VDeclUseTracker@?A0xeafd01d6@@@std@@PEBVDecl@clang@@AEBVUnsafeBufferUsageHandler@4@_N@Z)
    Error LNK2019: unresolved external symbol "struct clang::ast_matchers::internal::VariadicOperatorMatcherFunc<2,4294967295> const clang::ast_matchers::anyOf" (?anyOf@ast_matchers@clang@@3U?$VariadicOperatorMatcherFunc@$01$0PPPPPPPP@@internal@12@B) referenced in function "class std::tuple<class std::vector<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> > > >,class std::vector<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> > > >,class `anonymous namespace'::DeclUseTracker> __cdecl findGadgets(class clang::Decl const *,class clang::UnsafeBufferUsageHandler const &,bool)" (?findGadgets@@YA?AV?$tuple@V?$vector@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@@2@@std@@V?$vector@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@@2@@2@VDeclUseTracker@?A0xeafd01d6@@@std@@PEBVDecl@clang@@AEBVUnsafeBufferUsageHandler@4@_N@Z)
    Error LNK2019: unresolved external symbol "struct clang::ast_matchers::internal::VariadicOperatorMatcherFunc<2,4294967295> const clang::ast_matchers::allOf" (?allOf@ast_matchers@clang@@3U?$VariadicOperatorMatcherFunc@$01$0PPPPPPPP@@internal@12@B) referenced in function "class std::tuple<class std::vector<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> > > >,class std::vector<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> > > >,class `anonymous namespace'::DeclUseTracker> __cdecl findGadgets(class clang::Decl const *,class clang::UnsafeBufferUsageHandler const &,bool)" (?findGadgets@@YA?AV?$tuple@V?$vector@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@@2@@std@@V?$vector@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@@2@@2@VDeclUseTracker@?A0xeafd01d6@@@std@@PEBVDecl@clang@@AEBVUnsafeBufferUsageHandler@4@_N@Z)
    Error LNK2019: unresolved external symbol "struct clang::ast_matchers::internal::VariadicOperatorMatcherFunc<1,1> const clang::ast_matchers::unless" (?unless@ast_matchers@clang@@3U?$VariadicOperatorMatcherFunc@$00$00@internal@12@B) referenced in function "class std::tuple<class std::vector<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> > > >,class std::vector<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> > > >,class `anonymous namespace'::DeclUseTracker> __cdecl findGadgets(class clang::Decl const *,class clang::UnsafeBufferUsageHandler const &,bool)" (?findGadgets@@YA?AV?$tuple@V?$vector@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@@2@@std@@V?$vector@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@@2@@2@VDeclUseTracker@?A0xeafd01d6@@@std@@PEBVDecl@clang@@AEBVUnsafeBufferUsageHandler@4@_N@Z)
    Error LNK2019: unresolved external symbol "class clang::ast_matchers::internal::VariadicDynCastAllOfMatcher<class clang::Stmt,class clang::DeclRefExpr> const clang::ast_matchers::declRefExpr" (?declRefExpr@ast_matchers@clang@@3V?$VariadicDynCastAllOfMatcher@VStmt@clang@@VDeclRefExpr@2@@internal@12@B) referenced in function "class std::tuple<class std::vector<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> > > >,class std::vector<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> > > >,class `anonymous namespace'::DeclUseTracker> __cdecl findGadgets(class clang::Decl const *,class clang::UnsafeBufferUsageHandler const &,bool)" (?findGadgets@@YA?AV?$tuple@V?$vector@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@@2@@std@@V?$vector@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@@2@@2@VDeclUseTracker@?A0xeafd01d6@@@std@@PEBVDecl@clang@@AEBVUnsafeBufferUsageHandler@4@_N@Z)
    Error LNK2019: unresolved external symbol "class clang::ast_matchers::internal::VariadicDynCastAllOfMatcher<class clang::Type,class clang::PointerType> const clang::ast_matchers::pointerType" (?pointerType@ast_matchers@clang@@3V?$VariadicDynCastAllOfMatcher@VType@clang@@VPointerType@2@@internal@12@B) referenced in function "__cdecl clang::ast_matchers::hasPointerType(void)" (?hasPointerType@ast_matchers@clang@@YA@XZ)
    Error LNK2019: unresolved external symbol "class clang::ast_matchers::internal::VariadicDynCastAllOfMatcher<class clang::Decl,class clang::VarDecl> const clang::ast_matchers::varDecl" (?varDecl@ast_matchers@clang@@3V?$VariadicDynCastAllOfMatcher@VDecl@clang@@VVarDecl@2@@internal@12@B) referenced in function "class std::tuple<class std::vector<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> > > >,class std::vector<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> > > >,class `anonymous namespace'::DeclUseTracker> __cdecl findGadgets(class clang::Decl const *,class clang::UnsafeBufferUsageHandler const &,bool)" (?findGadgets@@YA?AV?$tuple@V?$vector@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@@2@@std@@V?$vector@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@@2@@2@VDeclUseTracker@?A0xeafd01d6@@@std@@PEBVDecl@clang@@AEBVUnsafeBufferUsageHandler@4@_N@Z)
    Error LNK2001: unresolved external symbol "class clang::ast_matchers::internal::VariadicDynCastAllOfMatcher<class clang::Decl,class clang::CXXConstructorDecl> const clang::ast_matchers::cxxConstructorDecl" (?cxxConstructorDecl@ast_matchers@clang@@3V?$VariadicDynCastAllOfMatcher@VDecl@clang@@VCXXConstructorDecl@2@@internal@12@B)
    Error LNK2019: unresolved external symbol "public: static class clang::ast_matchers::internal::DynTypedMatcher __cdecl clang::ast_matchers::internal::DynTypedMatcher::constructVariadic(enum clang::ast_matchers::internal::DynTypedMatcher::VariadicOperator,class clang::ASTNodeKind,class std::vector<class clang::ast_matchers::internal::DynTypedMatcher,class std::allocator<class clang::ast_matchers::internal::DynTypedMatcher> >)" (?constructVariadic@DynTypedMatcher@internal@ast_matchers@clang@@SA?AV1234@W4VariadicOperator@1234@VASTNodeKind@4@V?$vector@VDynTypedMatcher@internal@ast_matchers@clang@@V?$allocator@VDynTypedMatcher@internal@ast_matchers@clang@@@std@@@std@@@Z) referenced in function "public: __cdecl clang::ast_matchers::internal::VariadicOperatorMatcher<class clang::ast_matchers::internal::VariadicOperatorMatcher<class clang::ast_matchers::internal::VariadicOperatorMatcher<class clang::ast_matchers::internal::PolymorphicMatcher<class clang::ast_matchers::internal::matcher_hasOperatorName0Matcher,void __cdecl(struct clang::ast_matchers::internal::TypeList<class clang::BinaryOperator,class clang::CXXOperatorCallExpr,class clang::CXXRewrittenBinaryOperator,class clang::UnaryOperator>),class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class clang::ast_matchers::internal::PolymorphicMatcher<class clang::ast_matchers::internal::matcher_hasOperatorName0Matcher,void __cdecl(struct clang::ast_matchers::internal::TypeList<class clang::BinaryOperator,class clang::CXXOperatorCallExpr,class clang::CXXRewrittenBinaryOperator,class clang::UnaryOperator>),class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class clang::ast_matchers::internal::PolymorphicMatcher<class clang::ast_matchers::internal::matcher_hasOperatorName0Matcher,void __cdecl(struct clang::ast_matchers::internal::TypeList<class clang::BinaryOperator,class clang::CXXOperatorCallExpr,class clang::CXXRewrittenBinaryOperator,class clang::UnaryOperator>),class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class clang::ast_matchers::internal::PolymorphicMatcher<class clang::ast_matchers::internal::matcher_hasOperatorName0Matcher,void __cdecl(struct clang::ast_matchers::internal::TypeList<class clang::BinaryOperator,class clang::CXXOperatorCallExpr,class clang::CXXRewrittenBinaryOperator,class clang::UnaryOperator>),class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class clang::ast_matchers::internal::PolymorphicMatcher<class clang::ast_matchers::internal::matcher_hasLHS0Matcher,void __cdecl(struct clang::ast_matchers::internal::TypeList<class clang::BinaryOperator,class clang::CXXOperatorCallExpr,class clang::CXXRewrittenBinaryOperator,class clang::ArraySubscriptExpr>),class clang::ast_matchers::internal::Matcher<class clang::Expr> >,class clang::ast_matchers::internal::PolymorphicMatcher<class clang::ast_matchers::internal::matcher_hasRHS0Matcher,void __cdecl(struct clang::ast_matchers::internal::TypeList<class clang::BinaryOperator,class clang::CXXOperatorCallExpr,class clang::CXXRewrittenBinaryOperator,class clang::ArraySubscriptExpr>),class clang::ast_matchers::internal::Matcher<class clang::Expr> > > &,class clang::ast_matchers::internal::VariadicOperatorMatcher<class clang::ast_matchers::internal::PolymorphicMatcher<class clang::ast_matchers::internal::matcher_hasOperatorName0Matcher,void __cdecl(struct clang::ast_matchers::internal::TypeList<class clang::BinaryOperator,class clang::CXXOperatorCallExpr,class clang::CXXRewrittenBinaryOperator,class clang::UnaryOperator>),class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class clang::ast_matchers::internal::PolymorphicMatcher<class clang::ast_matchers::internal::matcher_hasRHS0Matcher,void __cdecl(struct clang::ast_matchers::internal::TypeList<class clang::BinaryOperator,class clang::CXXOperatorCallExpr,class clang::CXXRewrittenBinaryOperator,class clang::ArraySubscriptExpr>),class clang::ast_matchers::internal::Matcher<class clang::Expr> >,class clang::ast_matchers::internal::PolymorphicMatcher<class clang::ast_matchers::internal::matcher_hasLHS0Matcher,void __cdecl(struct clang::ast_matchers::internal::TypeList<class clang::BinaryOperator,class clang::CXXOperatorCallExpr,class clang::CXXRewrittenBinaryOperator,class clang::ArraySubscriptExpr>),class clang::ast_matchers::internal::Matcher<class clang::Expr> > > &>::operator<class clang::BinaryOperator> class clang::ast_matchers::internal::Matcher<class clang::BinaryOperator>(void)&& " (??$?BVBinaryOperator@clang@@@?$VariadicOperatorMatcher@AEAV?$VariadicOperatorMatcher@V?$VariadicOperatorMatcher@V?$PolymorphicMatcher@Vmatcher_hasOperatorName0Matcher@internal@ast_matchers@clang@@$$A6AXU?$TypeList@VBinaryOperator@clang@@VCXXOperatorCallExpr@2@VCXXRewrittenBinaryOperator@2@VUnaryOperator@2@@234@@ZV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@internal@ast_matchers@clang@@V1234@V1234@V1234@@internal@ast_matchers@clang@@V?$PolymorphicMatcher@Vmatcher_hasLHS0Matcher@internal@ast_matchers@clang@@$$A6AXU?$TypeList@VBinaryOperator@clang@@VCXXOperatorCallExpr@2@VCXXRewrittenBinaryOperator@2@VArraySubscriptExpr@2@@234@@ZV?$Matcher@VExpr@clang@@@234@@234@V?$PolymorphicMatcher@Vmatcher_hasRHS0Matcher@internal@ast_matchers@clang@@$$A6AXU?$TypeList@VBinaryOperator@clang@@VCXXOperatorCallExpr@2@VCXXRewrittenBinaryOperator@2@VArraySubscriptExpr@2@@234@@ZV?$Matcher@VExpr@clang@@@234@@234@@internal@ast_matchers@clang@@AEAV?$VariadicOperatorMatcher@V?$PolymorphicMatcher@Vmatcher_hasOperatorName0Matcher@internal@ast_matchers@clang@@$$A6AXU?$TypeList@VBinaryOperator@clang@@VCXXOperatorCallExpr@2@VCXXRewrittenBinaryOperator@2@VUnaryOperator@2@@234@@ZV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@internal@ast_matchers@clang@@V?$PolymorphicMatcher@Vmatcher_hasRHS0Matcher@internal@ast_matchers@clang@@$$A6AXU?$TypeList@VBinaryOperator@clang@@VCXXOperatorCallExpr@2@VCXXRewrittenBinaryOperator@2@VArraySubscriptExpr@2@@234@@ZV?$Matcher@VExpr@clang@@@234@@234@V?$PolymorphicMatcher@Vmatcher_hasLHS0Matcher@internal@ast_matchers@clang@@$$A6AXU?$TypeList@VBinaryOperator@clang@@VCXXOperatorCallExpr@2@VCXXRewrittenBinaryOperator@2@VArraySubscriptExpr@2@@234@@ZV?$Matcher@VExpr@clang@@@234@@234@@234@@internal@ast_matchers@clang@@QEHAA?AV?$Matcher@VBinaryOperator@clang@@@123@XZ)
    Error LNK2019: unresolved external symbol "public: static class clang::ast_matchers::internal::DynTypedMatcher __cdecl clang::ast_matchers::internal::DynTypedMatcher::trueMatcher(class clang::ASTNodeKind)" (?trueMatcher@DynTypedMatcher@internal@ast_matchers@clang@@SA?AV1234@VASTNodeKind@4@@Z) referenced in function "class clang::ast_matchers::internal::BindableMatcher<class clang::ArrayInitIndexExpr> __cdecl clang::ast_matchers::internal::makeAllOfComposite<class clang::ArrayInitIndexExpr>(class llvm::ArrayRef<class clang::ast_matchers::internal::Matcher<class clang::ArrayInitIndexExpr> const *>)" (??$makeAllOfComposite@VArrayInitIndexExpr@clang@@@internal@ast_matchers@clang@@YA?AV?$BindableMatcher@VArrayInitIndexExpr@clang@@@012@V?$ArrayRef@PEBV?$Matcher@VArrayInitIndexExpr@clang@@@internal@ast_matchers@clang@@@llvm@@@Z)
    Error LNK2019: unresolved external symbol "public: class clang::ast_matchers::internal::DynTypedMatcher __cdecl clang::ast_matchers::internal::DynTypedMatcher::dynCastTo(class clang::ASTNodeKind)const " (?dynCastTo@DynTypedMatcher@internal@ast_matchers@clang@@QEBA?AV1234@VASTNodeKind@4@@Z) referenced in function "public: __cdecl clang::ast_matchers::internal::VariadicOperatorMatcher<class clang::ast_matchers::internal::VariadicOperatorMatcher<class clang::ast_matchers::internal::VariadicOperatorMatcher<class clang::ast_matchers::internal::PolymorphicMatcher<class clang::ast_matchers::internal::matcher_hasOperatorName0Matcher,void __cdecl(struct clang::ast_matchers::internal::TypeList<class clang::BinaryOperator,class clang::CXXOperatorCallExpr,class clang::CXXRewrittenBinaryOperator,class clang::UnaryOperator>),class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class clang::ast_matchers::internal::PolymorphicMatcher<class clang::ast_matchers::internal::matcher_hasOperatorName0Matcher,void __cdecl(struct clang::ast_matchers::internal::TypeList<class clang::BinaryOperator,class clang::CXXOperatorCallExpr,class clang::CXXRewrittenBinaryOperator,class clang::UnaryOperator>),class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class clang::ast_matchers::internal::PolymorphicMatcher<class clang::ast_matchers::internal::matcher_hasOperatorName0Matcher,void __cdecl(struct clang::ast_matchers::internal::TypeList<class clang::BinaryOperator,class clang::CXXOperatorCallExpr,class clang::CXXRewrittenBinaryOperator,class clang::UnaryOperator>),class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class clang::ast_matchers::internal::PolymorphicMatcher<class clang::ast_matchers::internal::matcher_hasOperatorName0Matcher,void __cdecl(struct clang::ast_matchers::internal::TypeList<class clang::BinaryOperator,class clang::CXXOperatorCallExpr,class clang::CXXRewrittenBinaryOperator,class clang::UnaryOperator>),class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class clang::ast_matchers::internal::PolymorphicMatcher<class clang::ast_matchers::internal::matcher_hasLHS0Matcher,void __cdecl(struct clang::ast_matchers::internal::TypeList<class clang::BinaryOperator,class clang::CXXOperatorCallExpr,class clang::CXXRewrittenBinaryOperator,class clang::ArraySubscriptExpr>),class clang::ast_matchers::internal::Matcher<class clang::Expr> >,class clang::ast_matchers::internal::PolymorphicMatcher<class clang::ast_matchers::internal::matcher_hasRHS0Matcher,void __cdecl(struct clang::ast_matchers::internal::TypeList<class clang::BinaryOperator,class clang::CXXOperatorCallExpr,class clang::CXXRewrittenBinaryOperator,class clang::ArraySubscriptExpr>),class clang::ast_matchers::internal::Matcher<class clang::Expr> > > &,class clang::ast_matchers::internal::VariadicOperatorMatcher<class clang::ast_matchers::internal::PolymorphicMatcher<class clang::ast_matchers::internal::matcher_hasOperatorName0Matcher,void __cdecl(struct clang::ast_matchers::internal::TypeList<class clang::BinaryOperator,class clang::CXXOperatorCallExpr,class clang::CXXRewrittenBinaryOperator,class clang::UnaryOperator>),class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class clang::ast_matchers::internal::PolymorphicMatcher<class clang::ast_matchers::internal::matcher_hasRHS0Matcher,void __cdecl(struct clang::ast_matchers::internal::TypeList<class clang::BinaryOperator,class clang::CXXOperatorCallExpr,class clang::CXXRewrittenBinaryOperator,class clang::ArraySubscriptExpr>),class clang::ast_matchers::internal::Matcher<class clang::Expr> >,class clang::ast_matchers::internal::PolymorphicMatcher<class clang::ast_matchers::internal::matcher_hasLHS0Matcher,void __cdecl(struct clang::ast_matchers::internal::TypeList<class clang::BinaryOperator,class clang::CXXOperatorCallExpr,class clang::CXXRewrittenBinaryOperator,class clang::ArraySubscriptExpr>),class clang::ast_matchers::internal::Matcher<class clang::Expr> > > &>::operator<class clang::BinaryOperator> class clang::ast_matchers::internal::Matcher<class clang::BinaryOperator>(void)&& " (??$?BVBinaryOperator@clang@@@?$VariadicOperatorMatcher@AEAV?$VariadicOperatorMatcher@V?$VariadicOperatorMatcher@V?$PolymorphicMatcher@Vmatcher_hasOperatorName0Matcher@internal@ast_matchers@clang@@$$A6AXU?$TypeList@VBinaryOperator@clang@@VCXXOperatorCallExpr@2@VCXXRewrittenBinaryOperator@2@VUnaryOperator@2@@234@@ZV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@internal@ast_matchers@clang@@V1234@V1234@V1234@@internal@ast_matchers@clang@@V?$PolymorphicMatcher@Vmatcher_hasLHS0Matcher@internal@ast_matchers@clang@@$$A6AXU?$TypeList@VBinaryOperator@clang@@VCXXOperatorCallExpr@2@VCXXRewrittenBinaryOperator@2@VArraySubscriptExpr@2@@234@@ZV?$Matcher@VExpr@clang@@@234@@234@V?$PolymorphicMatcher@Vmatcher_hasRHS0Matcher@internal@ast_matchers@clang@@$$A6AXU?$TypeList@VBinaryOperator@clang@@VCXXOperatorCallExpr@2@VCXXRewrittenBinaryOperator@2@VArraySubscriptExpr@2@@234@@ZV?$Matcher@VExpr@clang@@@234@@234@@internal@ast_matchers@clang@@AEAV?$VariadicOperatorMatcher@V?$PolymorphicMatcher@Vmatcher_hasOperatorName0Matcher@internal@ast_matchers@clang@@$$A6AXU?$TypeList@VBinaryOperator@clang@@VCXXOperatorCallExpr@2@VCXXRewrittenBinaryOperator@2@VUnaryOperator@2@@234@@ZV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@internal@ast_matchers@clang@@V?$PolymorphicMatcher@Vmatcher_hasRHS0Matcher@internal@ast_matchers@clang@@$$A6AXU?$TypeList@VBinaryOperator@clang@@VCXXOperatorCallExpr@2@VCXXRewrittenBinaryOperator@2@VArraySubscriptExpr@2@@234@@ZV?$Matcher@VExpr@clang@@@234@@234@V?$PolymorphicMatcher@Vmatcher_hasLHS0Matcher@internal@ast_matchers@clang@@$$A6AXU?$TypeList@VBinaryOperator@clang@@VCXXOperatorCallExpr@2@VCXXRewrittenBinaryOperator@2@VArraySubscriptExpr@2@@234@@ZV?$Matcher@VExpr@clang@@@234@@234@@234@@internal@ast_matchers@clang@@QEHAA?AV?$Matcher@VBinaryOperator@clang@@@123@XZ)
    Error LNK2019: unresolved external symbol "public: bool __cdecl clang::ast_matchers::internal::DynTypedMatcher::matches(class clang::DynTypedNode const &,class clang::ast_matchers::internal::ASTMatchFinder *,class clang::ast_matchers::internal::BoundNodesTreeBuilder *)const " (?matches@DynTypedMatcher@internal@ast_matchers@clang@@QEBA_NAEBVDynTypedNode@4@PEAVASTMatchFinder@234@PEAVBoundNodesTreeBuilder@234@@Z) referenced in function "private: bool __cdecl clang::ast_matchers::MatchDescendantVisitor::match<class clang::Stmt>(class clang::Stmt const &)" (??$match@VStmt@clang@@@MatchDescendantVisitor@ast_matchers@clang@@AEAA_NAEBVStmt@2@@Z)
    Error LNK2019: unresolved external symbol "public: class std::optional<class clang::ast_matchers::internal::DynTypedMatcher> __cdecl clang::ast_matchers::internal::DynTypedMatcher::tryBind(class llvm::StringRef)const " (?tryBind@DynTypedMatcher@internal@ast_matchers@clang@@QEBA?AV?$optional@VDynTypedMatcher@internal@ast_matchers@clang@@@std@@VStringRef@llvm@@@Z) referenced in function "public: class clang::ast_matchers::internal::Matcher<class clang::Stmt> __cdecl clang::ast_matchers::internal::BindableMatcher<class clang::Stmt>::bind(class llvm::StringRef)const " (?bind@?$BindableMatcher@VStmt@clang@@@internal@ast_matchers@clang@@QEBA?AV?$Matcher@VStmt@clang@@@234@VStringRef@llvm@@@Z)
    Error LNK2019: unresolved external symbol "public: bool __cdecl clang::ast_matchers::internal::ASTMatchFinder::isTraversalIgnoringImplicitNodes(void)const " (?isTraversalIgnoringImplicitNodes@ASTMatchFinder@internal@ast_matchers@clang@@QEBA_NXZ) referenced in function "public: virtual bool __cdecl clang::ast_matchers::internal::HasDeclarationMatcher<class clang::CXXConstructExpr,class clang::ast_matchers::internal::Matcher<class clang::Decl> >::matches(class clang::CXXConstructExpr const &,class clang::ast_matchers::internal::ASTMatchFinder *,class clang::ast_matchers::internal::BoundNodesTreeBuilder *)const " (?matches@?$HasDeclarationMatcher@VCXXConstructExpr@clang@@V?$Matcher@VDecl@clang@@@internal@ast_matchers@2@@internal@ast_matchers@clang@@UEBA_NAEBVCXXConstructExpr@4@PEAVASTMatchFinder@234@PEAVBoundNodesTreeBuilder@234@@Z)
    Error LNK2001: unresolved external symbol "class clang::ast_matchers::internal::VariadicDynCastAllOfMatcher<class clang::Decl,class clang::CXXMethodDecl> const clang::ast_matchers::cxxMethodDecl" (?cxxMethodDecl@ast_matchers@clang@@3V?$VariadicDynCastAllOfMatcher@VDecl@clang@@VCXXMethodDecl@2@@internal@12@B)
    Error LNK2019: unresolved external symbol "class clang::ast_matchers::internal::PolymorphicMatcher<class clang::ast_matchers::internal::HasAnyOperatorNameMatcher,void __cdecl(struct clang::ast_matchers::internal::TypeList<class clang::BinaryOperator,class clang::CXXOperatorCallExpr,class clang::CXXRewrittenBinaryOperator,class clang::UnaryOperator>),class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > __cdecl clang::ast_matchers::internal::hasAnyOperatorNameFunc(class llvm::ArrayRef<class llvm::StringRef const *>)" (?hasAnyOperatorNameFunc@internal@ast_matchers@clang@@YA?AV?$PolymorphicMatcher@VHasAnyOperatorNameMatcher@internal@ast_matchers@clang@@$$A6AXU?$TypeList@VBinaryOperator@clang@@VCXXOperatorCallExpr@2@VCXXRewrittenBinaryOperator@2@VUnaryOperator@2@@234@@ZV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@@123@V?$ArrayRef@PEBVStringRef@llvm@@@llvm@@@Z) referenced in function "__cdecl clang::ast_matchers::isInUnspecifiedLvalueContext(class clang::ast_matchers::internal::Matcher<class clang::Expr>)" (?isInUnspecifiedLvalueContext@ast_matchers@clang@@YA@V?$Matcher@VExpr@clang@@@internal@12@@Z)
    Error LNK2001: unresolved external symbol "public: virtual class llvm::StringRef __cdecl clang::ast_matchers::MatchFinder::MatchCallback::getID(void)const " (?getID@MatchCallback@MatchFinder@ast_matchers@clang@@UEBA?AVStringRef@llvm@@XZ)
    Error LNK2001: unresolved external symbol "public: virtual class std::optional<enum clang::TraversalKind> __cdecl clang::ast_matchers::MatchFinder::MatchCallback::getCheckTraversalKind(void)const " (?getCheckTraversalKind@MatchCallback@MatchFinder@ast_matchers@clang@@UEBA?AV?$optional@W4TraversalKind@clang@@@std@@XZ)
    Error LNK2019: unresolved external symbol "public: __cdecl clang::ast_matchers::MatchFinder::MatchFinder(struct clang::ast_matchers::MatchFinder::MatchFinderOptions)" (??0MatchFinder@ast_matchers@clang@@QEAA@UMatchFinderOptions@012@@Z) referenced in function "class std::tuple<class std::vector<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> > > >,class std::vector<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> > > >,class `anonymous namespace'::DeclUseTracker> __cdecl findGadgets(class clang::Decl const *,class clang::UnsafeBufferUsageHandler const &,bool)" (?findGadgets@@YA?AV?$tuple@V?$vector@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@@2@@std@@V?$vector@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@@2@@2@VDeclUseTracker@?A0xeafd01d6@@@std@@PEBVDecl@clang@@AEBVUnsafeBufferUsageHandler@4@_N@Z)
    Error LNK2019: unresolved external symbol "public: __cdecl clang::ast_matchers::MatchFinder::~MatchFinder(void)" (??1MatchFinder@ast_matchers@clang@@QEAA@XZ) referenced in function "class std::tuple<class std::vector<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> > > >,class std::vector<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> > > >,class `anonymous namespace'::DeclUseTracker> __cdecl findGadgets(class clang::Decl const *,class clang::UnsafeBufferUsageHandler const &,bool)" (?findGadgets@@YA?AV?$tuple@V?$vector@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@@2@@std@@V?$vector@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@@2@@2@VDeclUseTracker@?A0xeafd01d6@@@std@@PEBVDecl@clang@@AEBVUnsafeBufferUsageHandler@4@_N@Z)
    Error LNK2019: unresolved external symbol "public: void __cdecl clang::ast_matchers::MatchFinder::addMatcher(class clang::ast_matchers::internal::Matcher<class clang::Stmt> const &,class clang::ast_matchers::MatchFinder::MatchCallback *)" (?addMatcher@MatchFinder@ast_matchers@clang@@QEAAXAEBV?$Matcher@VStmt@clang@@@internal@23@PEAVMatchCallback@123@@Z) referenced in function "class std::tuple<class std::vector<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> > > >,class std::vector<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> > > >,class `anonymous namespace'::DeclUseTracker> __cdecl findGadgets(class clang::Decl const *,class clang::UnsafeBufferUsageHandler const &,bool)" (?findGadgets@@YA?AV?$tuple@V?$vector@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@@2@@std@@V?$vector@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@@2@@2@VDeclUseTracker@?A0xeafd01d6@@@std@@PEBVDecl@clang@@AEBVUnsafeBufferUsageHandler@4@_N@Z)
    Error LNK2019: unresolved external symbol "public: void __cdecl clang::ast_matchers::MatchFinder::match(class clang::DynTypedNode const &,class clang::ASTContext &)" (?match@MatchFinder@ast_matchers@clang@@QEAAXAEBVDynTypedNode@3@AEAVASTContext@3@@Z) referenced in function "class std::tuple<class std::vector<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> > > >,class std::vector<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> > > >,class `anonymous namespace'::DeclUseTracker> __cdecl findGadgets(class clang::Decl const *,class clang::UnsafeBufferUsageHandler const &,bool)" (?findGadgets@@YA?AV?$tuple@V?$vector@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@@2@@std@@V?$vector@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@@2@@2@VDeclUseTracker@?A0xeafd01d6@@@std@@PEBVDecl@clang@@AEBVUnsafeBufferUsageHandler@4@_N@Z)
    Error LNK2019: unresolved external symbol "public: virtual __cdecl clang::ast_matchers::MatchFinder::MatchCallback::~MatchCallback(void)" (??1MatchCallback@MatchFinder@ast_matchers@clang@@UEAA@XZ) referenced in function "public: virtual __cdecl `class std::tuple<class std::vector<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::FixableGadget,struct std::default_delete<class `anonymous namespace'::FixableGadget> > > >,class std::vector<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> >,class std::allocator<class std::unique_ptr<class `anonymous namespace'::WarningGadget,struct std::default_delete<class `anonymous namespace'::WarningGadget> > > >,class `anonymous namespace'::DeclUseTracker> __cdecl findGadgets(class clang::Decl const *,class clang::UnsafeBufferUsageHandler const &,bool)'::`2'::GadgetFinderCallback::~GadgetFinderCallback(void)" (??1GadgetFinderCallback@?1??findGadgets@@YA?AV?$tuple@V?$vector@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VFixableGadget@?A0xeafd01d6@@U?$default_delete@VFixableGadget@?A0xeafd01d6@@@std@@@std@@@2@@std@@V?$vector@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@V?$allocator@V?$unique_ptr@VWarningGadget@?A0xeafd01d6@@U?$default_delete@VWarningGadget@?A0xeafd01d6@@@std@@@std@@@2@@2@VDeclUseTracker@?A0xeafd01d6@@@std@@PEBVDecl@clang@@AEBVUnsafeBufferUsageHandler@5@_N@Z@UEAA@XZ)
    Error LNK1120: 34 unresolved externals

@bkryza
Copy link
Owner

bkryza commented Dec 11, 2023

@DeveloperPaul123 TBH I haven't reproduced these steps in a while, these days to test if it works on Windows I just run this script from the main project directory (please adjust the prefix inside it):

https://github.com/bkryza/clang-uml/blob/master/build.ps1

It's possible that for LLVM 17 on Windows there is slightly different set of required LLVM libraries specified in CMake here. In particular there is an IF:

    if(MSVC)
        if(${LLVM_PACKAGE_VERSION} VERSION_LESS "15.0")
            list(REMOVE_ITEM LIBTOOLING_LIBS clangSupport)
        else()
            list(APPEND LIBTOOLING_LIBS
                    LLVMWindowsDriver
                    LLVMWindowsManifest)
        endif()
    endif(MSVC)

So maybe on LLVM 17 it needs to adjusted in yet another way... I'll investigate.

@bkryza
Copy link
Owner

bkryza commented Dec 11, 2023

@DeveloperPaul123 Btw, can you describe what kind of errors do you get if you try to use the existing clang-uml binary from Windows installer with your project?

Also when you say you use LLVM 17 in your project do you mean you link it to your project or you build your project with LLVM 17 (and not MSVC)?

@DeveloperPaul123
Copy link
Author

@bkryza We get errors with compile flags due to the fact that we are using C++23 features (which clang 15 does not support) so it complains about gnu++23 flags. We also use coroutines so it fails with that as well.

We use LLVM 17 to build our project in addition to MSVC.

@bkryza
Copy link
Owner

bkryza commented Dec 11, 2023

@DeveloperPaul123 Ok, I'll try to reproduce it.

@bkryza
Copy link
Owner

bkryza commented Dec 11, 2023

@DeveloperPaul123 Please try rebuilding with the latest master, apparently since LLVM 17 the AST matchers were moved to a separate library clangASTMatchers (at least on Windows), which needed to be specified in CMake.

I'm not sure if this will solve all your issues, but at least you should be able to compile clang-uml - I haven't done any testing against C++23 projects on Windows yet...

@DeveloperPaul123
Copy link
Author

@bkryza Your changes fixes my issues and I was able to build clang-uml successfully! Thank you so much.

Should I file a separate issue with any C++23 related issues with clang-uml?

@bkryza
Copy link
Owner

bkryza commented Dec 11, 2023

If you still have issues yes please.

If you specifically have problems with some flags, checkout these options, which allow you to add or remove compilation flags from compile commands database before they are passed to Clang. So for instance if you still get an error about the gnu23 flag just add it to the remove option and add a flag that Clang 17 will accept...

@DeveloperPaul123
Copy link
Author

Ok will do. I'll mention it here and maybe if you think it's worth filing a new issue I can do that too.

I was able to successfully generate diagrams with the clang-uml I built, but I had to add 2 blank files named D. One file had to be in my build directory (where the compile_commands.json is) and the other had to be in my source directory for the project. Otherwise I get an error like this:

[error] [tid 74860] [D:\Repositories\clang-uml\src\common\generators\generators.cc:265] canonical: The system cannot find the file specified.: "D:\Repositories\<Redacted>\out\build\x64-clang-debug\D"

@bkryza
Copy link
Owner

bkryza commented Dec 11, 2023

Ok great, the issue is most likely with the relative path handling code on Windows, maybe with the fact that std::filesystem::canonical() creates an absolute path to c: instead of d: - I'll also look into that.

@DeveloperPaul123
Copy link
Author

Ok great thanks. Let me know if you want me to file a new issue

@DeveloperPaul123
Copy link
Author

Just as a further update, I'm using a new build of clang-uml on a different computer today and I get the same issue as above

[error] [tid 74860] [D:\Repositories\clang-uml\src\common\generators\generators.cc:265] canonical: The system cannot find the file specified.: "D:\Repositories\<Redacted>\out\build\x64-clang-debug\D"

But the letter of the drive is different so now it complains about not finding E:\Repositories\<Redacted>\out\build\x64-clang-debug\E

@bkryza
Copy link
Owner

bkryza commented Dec 12, 2023

@DeveloperPaul123 Ok thanks for the update but this issue is not yet solved, I haven't yet tried to reproduce it (I only have a single C: drive in my Windows VM...)

@DeveloperPaul123
Copy link
Author

@bkryza No worries, just wanted to post the update before I forget.

I can try on one other computer that only has 1 hard drive and see if the issue happens there as well.

@bkryza
Copy link
Owner

bkryza commented Dec 13, 2023

@DeveloperPaul123 I've tried to reproduce this issue but couldn't. I've created a dummy C++ project in MSVC on E: drive, added a simple .clang-uml and it worked without problems.

Could you describe in a little more detail your project structure, compile_commands.json and .clang-uml, in particular:

  • Is your build directory within the project tree or outside?
  • How do you generate compile_commands.json, are you using Clang Power Tools plugin or sth else?
  • Does your compile_commands.json contain absolute or relative paths to sources (e.g. in my test project I generated it using Clang Power Tools plugin and it was like this - important fields are directory and file):
[
  {
    "directory": "E:/clang-uml-tmp/test1/Test1/",
    "command": "\"C:/Users/bkryz/AppData/Roaming/ClangPowerTools/LLVM_Lite/Bin/clang++.exe\" -x c++ \"E:/clang-uml-tmp/test1/Test1/Test1/main.cpp\" -std=c++14 -Wall -fms-compatibility-version=19.10 -Wmicrosoft -Wno-invalid-token-paste -Wno-unknown-pragmas -Wno-unused-value -fsyntax-only \"-DUNICODE\" \"-D_UNICODE\" \"-D_MT\" \"-D_DLL\" \"-D_DEBUG\" \"-D_CONSOLE\" \"-D_DEBUG_FUNCTIONAL_MACHINERY\" -isystem\"C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.34.31933/include\" -isystem\"C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.34.31933/atlmfc/include\" -isystem\"C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/VS/include\" -isystem\"C:/Program Files (x86)/Windows Kits/10/Include/10.0.22000.0/ucrt\" -isystem\"C:/Program Files (x86)/Windows Kits/10/Include/10.0.22000.0/um\" -isystem\"C:/Program Files (x86)/Windows Kits/10/Include/10.0.22000.0/shared\" -isystem\"C:/Program Files (x86)/Windows Kits/10/Include/10.0.22000.0/winrt\" -isystem\"C:/Program Files (x86)/Windows Kits/10/Include/10.0.22000.0/cppwinrt\"",
    "file": "E:/clang-uml-tmp/test1/Test1/Test1/main.cpp"
  }
]
  • Where in the project tree is your .clang-uml config?
  • What is the value of compilation_database_dir config variable?
  • What is in the glob pattern config variable?
  • Are you using paths filter in your config? If yes what is in there?

You can redact the names of the files and classes I only need to know how the paths are relative to each other.

Also very helpful would be to see the few last lines of clang-uml log when ran with -vvv verbosity - but that might require some careful redacting...

@DeveloperPaul123
Copy link
Author

DeveloperPaul123 commented Dec 14, 2023

@bkryza See my responses below.

Is your build directory within the project tree or outside?

It is currently in the source tree, under a build folder

How do you generate compile_commands.json, are you using Clang Power Tools plugin or sth else?

This is auto generated by CMake for us when we configure the project. We currently use Ninja as our generator and have CMAKE_EXPORT_COMPILE_COMMANDS set to true.

Does your compile_commands.json contain absolute or relative paths to sources

Looks like it contains absolute files paths for directory and file but relative path for output. See screenshot below (I no longer have to redact the project name :) )
image

Where in the project tree is your .clang-uml config

It is in the root of our source directory.

What is in the glob pattern config variable?

image

Are you using paths filter in your config? If yes what is in there?

We are not using paths

Output of clang-uml with -vvv verbosity. I don't think there is anything in this that really needs to be redacted, I was just being overly cautious before:

[debug] [tid 17908] [E:\Repositories\clang-uml\src\class_diagram\visitor\translation_unit_visitor.cc:51] = Visiting namespace declaration QCoro::detail::concepts at E:/Repositories/Hardware-Interface/out/build/x64-clang-debug/_deps/qcoro-src/qcoro/core/qcorosignal.h:23:11
[debug] [tid 17908] [E:\Repositories\clang-uml\src\class_diagram\visitor\translation_unit_visitor.cc:51] = Visiting namespace declaration QCoro at E:/Repositories/Hardware-Interface/out/build/x64-clang-debug/_deps/qcoro-src/qcoro/core/qcorotimer.h:16:11    
[debug] [tid 17908] [E:\Repositories\clang-uml\src\class_diagram\visitor\translation_unit_visitor.cc:51] = Visiting namespace declaration QCoro::detail at E:/Repositories/Hardware-Interface/out/build/x64-clang-debug/_deps/qcoro-src/qcoro/core/qcorotimer.h:16:18
[debug] [tid 17908] [E:\Repositories\clang-uml\src\class_diagram\visitor\translation_unit_visitor.cc:51] = Visiting namespace declaration QCoro at E:/Repositories/Hardware-Interface/out/build/x64-clang-debug/_deps/qcoro-src/qcoro/core/qcorotimer.h:55:11    
[debug] [tid 17908] [E:\Repositories\clang-uml\src\class_diagram\visitor\translation_unit_visitor.cc:51] = Visiting namespace declaration QtPrivate at D:/Qt/5.15.2/msvc2019_64/include\QtCore/qexception.h:85:11
[debug] [tid 17908] [E:\Repositories\clang-uml\src\class_diagram\visitor\translation_unit_visitor.cc:51] = Visiting namespace declaration QtPrivate at D:/Qt/5.15.2/msvc2019_64/include\QtCore/qresultstore.h:60:11
[debug] [tid 17908] [E:\Repositories\clang-uml\src\class_diagram\visitor\translation_unit_visitor.cc:51] = Visiting namespace declaration std at C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.38.33130\include\stop_token:26:1 <Spelling=C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.38.33130\include\yvals_core.h:1922:30>
[debug] [tid 17908] [E:\Repositories\clang-uml\src\class_diagram\visitor\translation_unit_visitor.cc:51] = Visiting namespace declaration std at C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.38.33130\include\thread:37:1 <Spelling=C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.38.33130\include\yvals_core.h:1922:30>
[debug] [tid 17908] [E:\Repositories\clang-uml\src\class_diagram\visitor\translation_unit_visitor.cc:51] = Visiting namespace declaration std::this_thread at C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.38.33130\include\thread:182:11
[debug] [tid 17908] [E:\Repositories\clang-uml\src\class_diagram\visitor\translation_unit_visitor.cc:51] = Visiting namespace declaration std at C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.38.33130\include\mutex:29:1 <Spelling=C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.38.33130\include\yvals_core.h:1922:30>
[debug] [tid 17908] [E:\Repositories\clang-uml\src\class_diagram\visitor\translation_unit_visitor.cc:51] = Visiting namespace declaration QCoro at E:/Repositories/Hardware-Interface/out/build/x64-clang-debug/_deps/qcoro-src/qcoro/core/qcorofuture.h:17:11   
[debug] [tid 17908] [E:\Repositories\clang-uml\src\class_diagram\visitor\translation_unit_visitor.cc:51] = Visiting namespace declaration QCoro::detail at E:/Repositories/Hardware-Interface/out/build/x64-clang-debug/_deps/qcoro-src/qcoro/core/qcorofuture.h:17:18
[debug] [tid 17908] [E:\Repositories\clang-uml\src\class_diagram\visitor\translation_unit_visitor.cc:51] = Visiting namespace declaration better_enums at E:/Repositories/Hardware-Interface/out/build/x64-clang-debug/_deps/better_enums-src\enum.h:309:11      
[debug] [tid 17908] [E:\Repositories\clang-uml\src\class_diagram\visitor\translation_unit_visitor.cc:51] = Visiting namespace declaration better_enums at E:/Repositories/Hardware-Interface/out/build/x64-clang-debug/_deps/better_enums-src\enum.h:1233:11     
[debug] [tid 17908] [E:\Repositories\clang-uml\src\class_diagram\visitor\translation_unit_visitor.cc:51] = Visiting namespace declaration std at C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.38.33130\include\bitset:21:1 <Spelling=C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.38.33130\include\yvals_core.h:1922:30>
[debug] [tid 17908] [E:\Repositories\clang-uml\src\class_diagram\visitor\translation_unit_visitor.cc:51] = Visiting namespace declaration hal at E:/Repositories/Hardware-Interface/hal/include\hal/enums/axis_state.h:7:11
[debug] [tid 17908] [E:\Repositories\clang-uml\src\class_diagram\model\diagram.cc:100] Adding namespace package: hal, hal
[debug] [tid 17908] [nested_trait.h:89] Adding nested element hal at path ''
[debug] [tid 17908] [E:\Repositories\clang-uml\src\class_diagram\visitor\translation_unit_visitor.cc:51] = Visiting namespace declaration hal::detail at E:/Repositories/Hardware-Interface/hal/include\hal/enums/axis_state.h:9:15
[debug] [tid 17908] [E:\Repositories\clang-uml\src\class_diagram\visitor\translation_unit_visitor.cc:51] = Visiting namespace declaration hal::better_enums_data_AxisStatus at E:/Repositories/Hardware-Interface/hal/include\hal/enums/axis_state.h:29:5 <Spelling=<scratch space>:142:1>
[error] [tid 17908] [E:\Repositories\clang-uml\src\common\generators\generators.cc:265] canonical: The system cannot find the file specified.: "E:\Repositories\Hardware-Interface\out\build\x64-clang-debug\E"

@bkryza
Copy link
Owner

bkryza commented Dec 14, 2023

@DeveloperPaul123 Thanks for the details, I've tried to reproduce, I've created another dummy project with cmake and ninja and it also worked for me, I'll try to figure out what the difference is, but here is my enviornment maybe you'll also notice sth:

PS E:\clang-uml-tmp\test3> cat .\.clang-uml
compilation_database_dir: cmake-build-debug
output_directory: docs/diagrams
diagrams:
  test3_class_diagram:
    type: class
    glob:
      - main.cpp
    using_namespace:
      - test3
    include:
      namespaces:
        - test3


PS E:\clang-uml-tmp\test3> cat .\cmake-build-debug\compile_commands.json
[
{
  "directory": "E:/clang-uml-tmp/test3/cmake-build-debug",
  "command": "C:\\PROGRA~1\\MICROS~1\\2022\\COMMUN~1\\VC\\Tools\\MSVC\\1434~1.319\\bin\\Hostx64\\x64\\cl.exe  /nologo /TP /DWIN32 /D_WINDOWS /EHsc /Zi /Ob0 /Od /RTC1 -MDd -std:c++latest /FoCMakeFiles\\test3.dir\\main.cpp.obj /FdTARGET_COMPILE_PDB /FS -c E:\\clang-uml-tmp\\test3\\main.cpp",
  "file": "E:\\clang-uml-tmp\\test3\\main.cpp"
}
]


PS E:\clang-uml-tmp\test3> ..\clang-uml\Release\src\Release\clang-uml.exe -n test3_class_diagram
fatal: not a git repository (or any of the parent directories): .git
[info] [tid 13408] [E:\clang-uml-tmp\clang-uml\src\cli\cli_handler.cc:303] Loaded clang-uml config from .clang-uml
[info] [tid 13408] [E:\clang-uml-tmp\clang-uml\src\cli\cli_handler.cc:327] Loading compilation database from E:\clang-uml-tmp\test3\cmake-build-debug directory
[info] [tid 13640] [E:\clang-uml-tmp\clang-uml\src\common\generators\generators.h:368] Generating diagram test3_class_diagram
[info] [tid 13640] [E:\clang-uml-tmp\clang-uml\src\common\generators\generators.cc:106] Written test3_class_diagram diagram to E:\clang-uml-tmp\test3\docs\diagrams\test3_class_diagram.puml


PS E:\clang-uml-tmp\test3> cat E:\clang-uml-tmp\test3\docs\diagrams\test3_class_diagram.puml
@startuml
class "A" as C_0002014804619275661006
class C_0002014804619275661006 {
__
}

'Generated with clang-uml, version 0.4.2-4-g7be848b
'LLVM version clang version 15.0.7 (https://github.com/llvm/llvm-project.git 8dfdcc7b7bf66834a761bd8de445840ef68e4d1a)
@enduml

@bkryza
Copy link
Owner

bkryza commented Dec 14, 2023

@DeveloperPaul123 I found one bug in path handling that might have caused it on your environment, but I still wasn't to reproduce it on mine.

If possible, could you retry with this branch fix-source-location-extraction-on-windows?

@DeveloperPaul123
Copy link
Author

@bkryza I'll give the branch you mentioned a try. Nothing stands out to me as too different except our clang versions (we're using 17.0.6 but I'm not sure if this would matter that much).

@DeveloperPaul123
Copy link
Author

@bkryza The branch you mentioned seems to fix the issue!

bkryza added a commit that referenced this issue Dec 15, 2023
…-windows

Fix manual parsing of Windows source location paths (#217)
@bkryza
Copy link
Owner

bkryza commented Dec 15, 2023

@DeveloperPaul123 Thanks for checking, I've merged it to master.

@DeveloperPaul123
Copy link
Author

@bkryza Thanks for the quick fixes! This resolves all our issues now. Thanks for your help

@DeveloperPaul123
Copy link
Author

Are you planning on a new patch release? I can supply a clang 17.0.6 installer if you want

@bkryza
Copy link
Owner

bkryza commented Dec 15, 2023

@DeveloperPaul123 I've already setup 17.0.6 on my Windows - I'll try to publish a new release by the end of year...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants