Library in für VS User gewohnter Form einbinden



  • Hi,

    mal ein Frage von einem ganz Windows-unbedarften:
    Wie binden die Hardcore Visual-Studio User externe libraries ein, und wie bekommen sie sie am liebsten geliefert?

    Hintergrund ist, dass ich gerade ein Preview-Release meiner Library ausrolle und das in der Form "Ordner "include"" + "Ordner "lib"" + "Beispiel-Code" + "Beispiel-Makefile" tue. Von VC10 benutze ich nur die Kommandozeilenprogramme und kompileren/linken mache ich dann mit nmake.
    Meine lib zu benutzen sind also zwei Zeilen im Makefile: Include-Suchpfad erweitern und Linker-Kommando um einen \lxyz ergänzen. Easy, möchte man meinen.

    Jetzt bekomme ich Fragen: Was zur Hölle ist denn ein Makefile?? *Tischkante beiß*

    Ich habe mich daher überwunden die GUI von VS zu starten und 1,2GB RAM später hatte ich auch schon ein Projekt angelegt. Jetzt gibts da ca. fünf verschiedene Stellen wo man den Inklude-Suchpfad des Compilers erweitern kann. Auch eine Zeile, in die ich händisch den vollen Pfad der zu linkenden Library eintragen kann, habe ich gefunden. Aber ich habe das einfach nur aus Verdacht mal da eingetragen, und glaube kaum, dass das die best-practice ist.

    Also liebe Visual-Studio-Benutzer: Was ist der unter VS allgemein übliche Weg, eine third-party library mit include- und lib-ordner einzubinden?

    Philipp



  • Hardcore-Weg: im Property Manager einen "New Project Property Sheet" erstellen, dort den include-Pfad (Common Properties -> C/C++ -> General -> Additional Include Directories), und die lib (Common Properties -> Linker -> Input -> Additional Dependencies) angeben und zum Projectfile dazubinden.

    Normalo-Weg: das gleiche auf Projektebene im Solution Manager für Release und Debug. Dann unter "Configuration Properties" statt unter "Common Properties".



  • Meinst du jetzt für deine Beispielprogramme?
    In denen solltest du auf jeden Fall die Pfade zum lib/include Folder
    a) im Projekt eintragen und nicht global im Studio und
    b) relative Pfade verwenden

    Wo?
    Na in den Projekteinstellungen unter Configuration Properties/C/C++ für den Include-Pfad, und unter Configuration Properties/Linker für den Lib Pfad.



  • Superlexx schrieb:

    Hardcore-Weg: im Property Manager einen "New Project Property Sheet" erstellen, dort den include-Pfad (Common Properties -> C/C++ -> General -> Additional Include Directories), und die lib (Common Properties -> Linker -> Input -> Additional Dependencies) angeben und zum Projectfile dazubinden.

    Normalo-Weg: das gleiche auf Projektebene im Solution Manager für Release und Debug. Dann unter "Configuration Properties" statt unter "Common Properties".

    Also vielleicht mach' ich was falsch, aber "Common Properties -> C/C++" und "Common Properties -> Linker" gibt's bei mir nicht.



  • Also einen Eintrag "Configuration Properties"->"C/C++" gibts bei mir nicht.
    Nur "Configuration Properties"->"VC++ Directories". Unter diesem gibt es "Executable Directories", "Include Directories", "Reference Directories", "Library Directories", usw.
    Hier soll ich also unter "Include Directories" den Ordner mit den Headern einstellen.

    Aber die lib nicht dort unter "Library Directories", sondern unter "Configuation Properties"->Linker->General->Additional Library Directories, so korrekt?
    Den Namen der library hänge ich dann hinten an Linker->Input->Additional dependencies an, also hinter die "kernel32.lib".

    Angenommen, ich möchte die dynamische Variante der Library benutzen, dann ist die .lib Datei ja nur nur der vorgeschaltete "Dummy", wo kann ich einstellen, wo er nach der DLL suchen muss, damit ich sie nicht in das build-Verzeichnis neben die Exe kopieren muss?

    EDIT: Doch, den C/C++-Eintrag gibt es. Jetzt wo ich eine Cpp Datei in mein Projekt eingefügt habe.
    Gott, ist diese IDE ein MONSTER...


  • Mod

    Wenn man libraries baut, ist es am günstigsten in den Headern den Verweis auf die LIB direkt anzugeben mit einem #pargma commant(Lib,), dann muss nur nach das Verzeichnis evtl. angegeben werden wo die Lib zu finden ist... Der Name der Lib ist dann durch sie Sourcen definiert!



  • hustbaer schrieb:

    Also vielleicht mach' ich was falsch, aber "Common Properties -> C/C++" und "Common Properties -> Linker" gibt's bei mir nicht.

    Schaust du auch im Property Sheet nach und nicht in Projekteinstellungen?



  • PhilippM schrieb:

    Angenommen, ich möchte die dynamische Variante der Library benutzen, dann ist die .lib Datei ja nur nur der vorgeschaltete "Dummy", wo kann ich einstellen, wo er nach der DLL suchen muss, damit ich sie nicht in das build-Verzeichnis neben die Exe kopieren muss?

    Nennt sich import lib, da steht der DLL-Name drin (ohne Pfad IIRC) und ihre Exports. Die DLL selber braucht man zum Bauen logischerweise nicht (es sei denn, man will ein abhängiges COM-Generat registrieren *g*).


Log in to reply