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

SQL Anywhere 12.0.1 » SQL Anywhere 服务器 - 编程 » 嵌入式 SQL

 

Windows 下的 DBLIB 动态装载

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

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

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

 ♦ 动态装载 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 语句之前包含 esqldll.h 头文件或在嵌入式 SQL 程序中包含 sqlca.hesqldll.h 头文件包括 sqlca.h

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

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

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

 示例