lib Datei und DLL



  • Hallo, wenn ich z.b. die Wininet.dll verwenden möchte wieso muss ich zu meinem Projekt dann auch noch die Wininet.lib hinzufügen ?

    Man kann doch auch Funktion von DLL´s ohne die lib Datei aufrufen wieso geht das nicht bei der WinInet.dll ? ( z.b. die Funktion InternetOpen aus der Wininet.dll )



  • Hallo,
    welche C++ Builder Version verwendest du? Da gleiche Problem hatte ich auch mal, es war nämlich ein Bug in einer Version und nachdem ich eine neue Version benutzt hatte, musste ich die Wininet.lib nicht mehr verwenden/einbinden.

    Ich glaube, dass der Bug in der Version von 2007 auftrat.

    Gruß
    Hawk



  • lib_ schrieb:

    Hallo, wenn ich z.b. die Wininet.dll verwenden möchte wieso muss ich zu meinem Projekt dann auch noch die Wininet.lib hinzufügen ?

    Man kann doch auch Funktion von DLL´s ohne die lib Datei aufrufen

    Nein. Es gilt zu unterscheiden zwischen statischen Bibliotheken und Importbibliotheken (die leider beide mit .lib suffiziert werden 😞 ); die ersten enthalten Objektdateien und also Code, letztere verweisen nur auf Funktionen, die von einer DLL exportiert werden. Wenn du eine DLL benutzt, mußt du immer die Importbibliothek linken.



  • audacia schrieb:

    Wenn du eine DLL benutzt, mußt du immer die Importbibliothek linken.

    Nein, dies gilt nur bei statischer Bindung. Man kann dlls auch rein dynamisch ohne Importlib verwenden. Dann muß man aber jede benötigte Funktion erst selber importieren.



  • Braunstein schrieb:

    audacia schrieb:

    Wenn du eine DLL benutzt, mußt du immer die Importbibliothek linken.

    Nein, dies gilt nur bei statischer Bindung. Man kann dlls auch rein dynamisch ohne Importlib verwenden. Dann muß man aber jede benötigte Funktion erst selber importieren.

    Allgemein gesehen hast du recht. (Allerdings wäre die dynamische Bindung der WinInet.dll außerordentlich sinnfrei.)



  • Das stimmt natürlich.
    Ich wollte deinem Satz, mit dem "immer laden", nur ein wenig die Absolutheit nehmen. 🙂


Anmelden zum Antworten