1. 使用 DEF 文件从 DLL 导出 模 块 定 义 (.def) 文 件 是 包 含 一 个 或 多 个 描 述 DLL 各 种 属 性 的 Module 语 句 的 文 本 文 件 。 如 果 不 使 用 __declspec(dllex port) 关 键 字 导 出 DLL 的 函数 , 则 DLL 需 要 .def 文 件 。 .def 文 件 必 须 至 少 包 含 下 列 模 块 定 义 语 句 : 文 件 中 的 第 一 个 语 句 必 须 是 LIBRARY 语 句 。此 语 句 将 .def 文 件 标 识 为 属于 DLL。 LIBRARY 语 句 的 后 面 是 DLL 的 名 称 。 链 接 器 将 此 名 称 放 到 DLL 的导 入 库 中 。 EXPORTS 语 句 列 出 名 称 , 可 能 的 话 还 会 列 出 DLL 导 出 函 数 的 序 号 值 。 通过 在 函 数 名 的 后 面 加 上 @ 符 和 一 个 数 字 ,给 函 数 分 配 序 号 值 。当 指 定 序 号 值 时 ,序 号 值 的 范 围 必 须 是 从 1 到 N, 其 中 N 是 DLL 导 出 函 数 的 个 数 。 如 果 希 望按 序 号 导 出 函 数 , 请 参 见 按 序 号 而 不 是 按 名 称 从 DLL 导 出 函 数 以 及 本 主 题 。 例 如 , 包 含 实 现 二 进 制 搜 索 树 的 代 码 的 DLL 看 上 去 可 能 像 下 面 这 样 : LIBRARY BTREE EXPORTS Insert @1 Delete @2 Member @3 Min @4 如 果 使 用 MFC DLL 向 导 创 建 MFC DLL, 则 向 导 将 为 您 创 建 主 干 .def 文件 并 将 其 自 动 添 加 到 项 目 中 。添 加 要 导 出 到 此 文 件 的 函 数 名 。对 于 非 MFC DLL,必 须 亲 自 创 建 .def 文 件 并 将 其 添 加 到 项 目 中 。 如 果 导 出 C++ 文 件 中 的 函 数 ,必 须 将 修 饰 名 放 到 .def 文 件 中 ,或 者 通 过使 用 外 部 “C”定 义 具有标 准 C 链 接 的 导 出 函 数 。 如 果 需 要 将 修 饰 名 放 到 .def 文 件 中 ,则 可 以 通 过 使 用 DUMPBIN 工 具 或 /MAP 链 接 器 选 项 来 获 取 修 饰 名 。请注意, 编译器 产生的修 饰 名 是编译器 特定的。如果...