beltoforion/muparser

Fehler beim Ausführen des Beispielcodes mit CLion in Linux

Closed this issue · 3 comments

Hallo!

Bin ziemlich neu in der Welt von C++. Ich habe den Beispielcode in ein neues Projekt kopiert, nachdem ich die Library wie in Install.txt beschrieben installierte, bekomme aber folgende Fehlermeldung:

/usr/bin/ld: CMakeFiles/muparsertest.dir/main.cpp.o: in function `main':
/home/parallels/Desktop/muparsertest/main.cpp:11: undefined reference to `mu::Parser::Parser()'
/usr/bin/ld: /home/parallels/Desktop/muparsertest/main.cpp:12: undefined reference to `mu::ParserBase::DefineVar(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, double*)'
/usr/bin/ld: /home/parallels/Desktop/muparsertest/main.cpp:14: undefined reference to `mu::ParserBase::SetExpr(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
/usr/bin/ld: /home/parallels/Desktop/muparsertest/main.cpp:19: undefined reference to `mu::ParserBase::Eval() const'
/usr/bin/ld: /home/parallels/Desktop/muparsertest/main.cpp:24: undefined reference to `mu::ParserError::GetMsg[abi:cxx11]() const'
/usr/bin/ld: CMakeFiles/muparsertest.dir/main.cpp.o: in function `void mu::ParserBase::DefineFun<double (*)(double)>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, double (*)(double), bool)':
/home/parallels/Desktop/muparsertest/muParserBase.h:136: undefined reference to `mu::ParserBase::ValidNameChars() const'
/usr/bin/ld: /home/parallels/Desktop/muparsertest/muParserBase.h:136: undefined reference to `mu::ParserCallback::ParserCallback(double (*)(double), bool, int, mu::ECmdCode)'
/usr/bin/ld: /home/parallels/Desktop/muparsertest/muParserBase.h:136: undefined reference to `mu::ParserBase::AddCallback(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, mu::ParserCallback const&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, mu::ParserCallback, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, mu::ParserCallback> > >&, char const*)'
/usr/bin/ld: CMakeFiles/muparsertest.dir/main.cpp.o: in function `mu::Parser::~Parser()':
/home/parallels/Desktop/muparsertest/muParser.h:50: undefined reference to `vtable for mu::Parser'
/usr/bin/ld: /home/parallels/Desktop/muparsertest/muParser.h:50: undefined reference to `mu::ParserBase::~ParserBase()'
collect2: error: ld returned 1 exit status
make[3]: *** [CMakeFiles/muparsertest.dir/build.make:104: muparsertest] Error 1
make[2]: *** [CMakeFiles/Makefile2:96: CMakeFiles/muparsertest.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:103: CMakeFiles/muparsertest.dir/rule] Error 2
make: *** [Makefile:138: muparsertest] Error 2

In den Ordnern usr/local/lib und usr/local/include finde ich jedoch die muParser-Files.
pkg-config muparser --cflags und --libs zeigt auch jene Pfade an.
sudo ldconfig sowie Neustart hab ich bereits ausprobiert.

LG und danke im Voraus,
clumsco

Ich kann zu der IDE nichts sagen aber das sind Linkerfehler. Es sieht so aus, als ob die muParser Bibliothek nicht verlinkt wurde. Das Projekt in der IDE muss dafür irgendwo Linkeroptionen anbieten.

Hab die Bibliotheken (dank Stackoverflow) manuell im Makefile hinzugefügt/verlinkt und es funktioniert jetzt.
Dadurch kenne ich mich nun mit Makefiles auch ein wenig aus.
Deshalb vielen Dank für die schnelle Antwort.

OK, schön das es funktioniert hat