Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - Programmierung » Embedded SQL

 

DBLIB unter Windows dynamisch laden

Laden Sie DBLIB dynamisch aus Ihrer eingebetteten Anwendung mithilfe des esqldll.c-Moduls im Unterverzeichnis SDK\C Ihres Installationsverzeichnisses, sodass Sie auf das Linken mit der Importbibliothek verzichten können.

Voraussetzungen

Es gibt keine Voraussetzungen für diese Aufgabe.

Kontext und Bemerkungen

Diese Aufgabe ist eine Alternative zur üblichen Methode des Verknüpfens einer Anwendung mit einer statischen Importbibliothek für eine DLL (Dynamic Link Library -·dynamische Verknüpfungsbibliothek), die die erforderlichen Funktionsdefinitionen enthält.

Eine ähnliche Aufgabe kann verwendet werden, um DBLIB auf Unix-Plattformen dynamisch zu laden.

 Aufgabe
  1. Ihre Anwendung muss db_init_dll aufrufen, um die DBLIB-DLL zu laden, und db_fini_dll, um die DBLIB-DLL wieder freizugeben. Der db_init_dll-Aufruf muss vor allen Funktionen in der Datenbankschnittstelle erfolgen, und keine Funktion in der Schnittstelle darf nach db_fini_dll aufgerufen werden.

    Sie müssen trotzdem die Bibliotheksfunktionen db_init und db_fini aufrufen.

  2. Fügen Sie vor der Anweisung EXEC SQL INCLUDE SQLCA mit #include die Header-Datei esqldll.h ein, oder fügen Sie sqlca.h mit #include in Ihr Embedded SQL-Programm ein. Die Header-Datei esqldll.h enthält sqlca.h.

  3. Ein SQL OS (Operating System - Betriebssystem)-Makro muss definiert werden. Die Header-Datei sqlos.h, die mit sqlca.h eingefügt wird, versucht das passende Makro zu bestimmen und zu definieren. Bei bestimmten Kombinationen von Betriebssystemen und Compilern kann dieser Versuch allerdings fehlschlagen. In diesem Fall müssen Sie entweder mit #define eine Definition am Beginn Ihrer Datei einfügen, oder die Definition mit einer Compiler-Option liefern. Der Makro, der für Windows definiert werden muss, wird unten dargestellt.

    Makro Unterstützte Plattformen
    _SQL_OS_WINDOWS Alle Windows-Betriebssysteme
  4. Kompilieren Sie esqldll.c.

  5. Statt mit der Importbibliothek linken Sie Ihre Embedded SQL-Anwendung mit dem Objektmodul esqldll.obj.

Ergebnisse

Die DBLIB-Schnittstellen-DLL wird dynamisch geladen, wenn Sie ihre Embedded SQL-Anwendung ausführen.

Beispiel

Ein Beispielprogramm, aus dem ersichtlich ist, wie die Schnittstellenbibliothek dynamisch geladen wird, finden Sie im Verzeichnis %SQLANYSAMP16%\SQLAnywhere\ESQLDynamicLoad. Der Quellcode befindet sich in sample.sqc.

Im folgenden Beispiel wird unter Windows die Datei sample.sqc mit dem Code aus esqldll.c kompiliert und verknüpft.

sqlpp sample.sqc
cl sample.c %SQLANY16%\sdk\c\esqldll.c /I%SQLANY16%\sdk\include Advapi32.lib