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

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 编程 » SQL Anywhere 数据访问 API » SQL Anywhere 嵌入式 SQL » 嵌入式 SQL 简介

 

在 Windows 中动态装载 DBLIB

开发使用 DLL 中的函数的应用程序通常的做法是:将应用程序链接到包含所需函数定义的导入库

本节介绍了在开发 SQL Anywhere 应用程序时不使用导入库的方法。可以使用安装目录的 SDK\C 子目录下的 esqldll.c 模块动态装载 DBLIB,而不必链接导入库。

可以使用类似的方法在 Unix 平台上动态装载 DBLIB。

♦  动态装载接口 DLL
  1. 您的程序必须调用 db_init_dll 才能装载 DLL,而且必须调用 db_fini_dll 才能释放 DLL。必须在调用数据库接口中的任何函数之前调用 db_init_dll,而且在调用 db_fini_dll 之后不能调用接口中的任何函数。

    您还必须调用 db_init 和 db_fini 库函数。

  2. 您必须在 EXEC SQL INCLUDE SQLCA 语句之前使用 #include 将 esqldll.h 头文件包含进来或在嵌入式 SQL 程序中包含 #include <sqlca.h> 行。esqldll.h 头文件包括 sqlca.h

  3. 必须定义一个 SQL OS 宏。sqlca.h 所包括的头文件 sqlos.h 会尝试确定适合的宏并对其进行定义。但是,平台和编译器的某些组合可能导致此操作失败。在这种情况下,您必须将 #define 添加到此文件的顶部,或者使用编译器选项进行定义。必须为 Windows 定义的宏如下所示。

    平台
    _SQL_OS_WINDOWS 所有 Windows 操作系统
  4. 编译 esqldll.c

  5. 将对象模块 esqldll.obj 与嵌入式 SQL 应用程序对象链接在一起,而不链接到导入库。

示例

您可以在 samples-dir\SQLAnywhere\ESQLDynamicLoad 目录中找到说明如何动态装载接口库的示例程序。源代码在 sample.sqc 中。