Einbinden von Fremdbibliotheken per Include
-
Hallo,
ich bin neu in C++ und Visual Studio 2010 und erforsche es gerade, indem ich versuche alle möglichen Fremdbibliotheken einzubinden und zu verstehen, was dabei passiert. Ich habe jetzt erst mal die Mathebibliothek "Eigen" eingebunden und das hat auch gut geklappt. Dabei musste ich nur den Source-Code der Bibliothek in das Include-Verzeichnis kopieren. Zum verständnis habe ich mehrere Fragen:- Verstehe ich das richtig, das aller benötigte Code der Bibliothek, den ich für mein Programm brauche, bei der Erstellung davon mitkompiliert wird?
- Ich kann ja entweder dem Compiler ein zusätzliches Include-Verzeichnis angeben, oder den Code einfach in das include-Verzeichnis des Compilers geben. Wann macht man das eine und wann das andere?
Grüße,
Safadinho
-
Safadinho schrieb:
Ich kann ja entweder dem Compiler ein zusätzliches Include-Verzeichnis angeben, oder den Code einfach in das include-Verzeichnis des Compilers geben. Wann macht man das eine und wann das andere?
Diese Frage ist einfach zu beantworten. Man macht immer ein zusätzliches Verzeichnis für solche Libs, niemals kopiert man eine Lib in die Verzeichnisse des Compilers.
Irgendwann kommt eine neue Compilerversion, die hat dann wieder eigene Verzeichnisse, wie willst du die Lib dann mit beiden verwenden ?
Oder du verwendest mehrere Versionen der Lib. Willst du die alle übereinander kippen ?
Oder es kommt ein Update für den Compiler und überschreibt erstmall alle Compilerverzeichnisse ...
Nein, niemals etwas in die Compilerverzeichnisse tun. Nicht umsonst gibt es dafür getrennte Schreibweisen mit #include <...> und #include "...". Es kann zu völlig abstrusen Fehlermeldungen kommen, die dann niemand anderes nachvollziegen kann. Du wirst dann wahrscheinlich sagen: "Da sieht man wie schlecht dieses VC++ ist, mit Compiler XYZ oder Programmiersprache ZYX wäre das nicht passiert."
Außerdem scheinst du der irrigen Annahme zu sein, jedenfalls schliesse ich das aus deinen anderen Fragen, man verwende alle Bibliotheken einfach über #include. Das gilt nur für Header-Only Bibliotheken, wo aller Code in Headerdateien implementiert ist. Andere Bibliotheken müssen, für jeden Compiler einzeln, vor Verwendung übersetzt werden und deren Code ist in *.lib Dateien. Das sind die anderen Verzeichnisse, nach denen du gefragt hast.