Frage zum Linken einer statischen Lib



  • Wenn ich eine statische Lib habe, nur mit Standard-Windows, keine MFC gelinkt, mit nem VC kompiliert.

    Bekomme ich diese Lib jetzt in ein Projekt rein, wo ich MFC nutze(egal ob statisch oder dynamisch)? Und wenn ja wie?
    Einfach die lib linken bringt ja diverse Fehler.



  • kannst normaler weiser so einlicken.
    Meisten muss man das in den Compiler-EInstellungen unter "Linker" mit angeben.

    Vergiss aber nicht, dass zu jeder .lib eine .dll gehört.



  • DerStu123 schrieb:

    Vergiss aber nicht, dass zu jeder .lib eine .dll gehört.

    Nein ich rede von einer statischen Lib, da is nix mit DLL



  • Wenn Du eine LIB erstellst, und diese die CRT verwendet (was ja normal ist), dann musst Du diese LIB später mit genau dem gleichen Compiler (CRT) und den genau gleichen Projekteinstellungen (MutliThreaded(Dll) usw.) in einem anderen Projekt verwenden!



  • Ähm die C Run Time Library ist doch "nur" ne Bezeichnung für diverese VC-Libs, oder?
    Wie soll man ein Programm denn ohne CRT kompilieren?
    Weil ich hab das grad in der MSDN gefunden:

    MSDN schrieb:

    If you link your program from the command line without a compiler option that specifies a C run-time library, the linker will use LIBCMT.LIB.

    Von daher dürfte das dann doch garnicht gehen?

    Hintergrund ist ich habe eine statische Lib, aber halt ohne MFC-Nutzung.
    Wenn ich die dann in MFC-Projekten bin, muss ich immer erstmal diverse Konfigurationen durchkompilieren, damit ich die dann nutzen kann je nach Projekt.

    Aber sieht wohl so aus, dass man da nicht drumrumkommt bei der statischen Lib.



  • Pellaeon schrieb:

    Wie soll man ein Programm denn ohne CRT kompilieren?

    Du darfst einfach keine CRT-Funktionen verwenden. Ganz einfach.

    Pellaeon schrieb:

    Hintergrund ist ich habe eine statische Lib, aber halt ohne MFC-Nutzung.
    Wenn ich die dann in MFC-Projekten bin, muss ich immer erstmal diverse Konfigurationen durchkompilieren, damit ich die dann nutzen kann je nach Projekt.

    Wenn die LIB nur die CRT verwendet, müssen halt die Einstellungen bzgl. der CRT in deinem MFC Projekt und der LIB gleich sein!

    PS: Wenn Du eine statische LIB hast, die in anderen Projekten verwendet werde, mit unterschiedlichen Compilern / Einstellungen, so gibt es zwei Möglichkeiten:
    1. Du erstellst für alle Denkbaren Compiler/Einstellungen eine separate LIB mit eigenem Namen
    2. Du verwendest keine CRT/STL/MFC/ATL und stellst eine reine C-Schnittstelle zur Verfügung (genau das macht auch die WinAPI)


Anmelden zum Antworten