+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

Howto: List & Label DLLs in C/C++ und Delphi dynamisch laden

(combit Team) #1
Gilt ab List & Label 8
Oftmals kann es sinnvoll sein, die List & Label DLLs erst zur Laufzeit dann dynamisch zu laden, wenn sie wirklich benötigt werden (geringerer Speicherverbrauch, schnellere Programmstartupzeit, etc.). Um dies möglichst komfortabel zu gestalten, gibt es für C/C++ und Delphi spezielle Deklarationsdateien, welche dies ermöglichen und in Ihrer Installation enthalten sind.

Um Ihren Sourcecode auf ein dynamisches Laden von List & Label umzustellen, sind nur ein paar wenige, einfache Schritte notwendig (ersetzen Sie dabei jeweils "??" durch die entsprechende List & Label Hauptversionsnummer):
  • Ersetzen Sie alle Stellen, an denen Sie "cmbtll??.h" includen durch "cmbtll??.hx".
  • In einem Ihrer Sourcecodemodule platzieren Sie zusätzlich noch folgende Zeilen:
#undef _LL??_H
#define IMPLEMENTATION
#include "cmbtll??.hx"
#undef IMPLEMENTATION
  • Nun stehen die Funktionen LL??xLoad() und LL??xUnload() zusätzlich zur Verfügung. Verwenden Sie diese um List & Label dynamisch zu laden.
  • Entfernen Sie die cmll??.lib aus Ihren Linker-Einstellungen.
Das war's! Ihren sonstigen List & Label relevanten Sourcecode brauchen Sie nicht zu modifizieren.
Nachfolgend nochmals der komplette dafür relevante Code:
// ...
#include "cmbtll??.hx"
// ...

#undef _LL??_H
#define IMPLEMENTATION
#include "cmbtll??.hx"
#undef IMPLEMENTATION

// ...
if (LL??xLoad() < 0)
{
    MessageBox("Fehler: LL?? konnte nicht geladen werden!");
    return;
}

// ... normal List & Label operation

LL??xUnload();


Hinweis: Für Delphi gehen Sie genau analog vor und verwenden die .PX Datei.
Wichtig: Das dynamische Laden über den oben vorgestellten Mechanismus funktioniert nur, wenn die List & Label DLL Schnittstelle verwendet wird. Ist eine Komponente im Einsatz, so erfolgt das Laden bereits durch den Komponenten-Mechanismus automatisch, hierauf haben Sie auch mit o.g. Methode keinen Einfluss.

IDKBTD000594 KBTD000594