【发布时间】:2011-12-21 10:21:53
【问题描述】:
我有一个用于 lib 文件的 API。 使用该 lib 文件提供了 .h 文件。 现在我想在 Delphi 中调用 lib 文件,并使用它的功能。
lib 文件如何连接到 Delphi?
更新:好的分配工作需要解决,如果我得到一个 dll 怎么办?我如何将其链接到 Delphi?
【问题讨论】:
标签: delphi delphi-2009
我有一个用于 lib 文件的 API。 使用该 lib 文件提供了 .h 文件。 现在我想在 Delphi 中调用 lib 文件,并使用它的功能。
lib 文件如何连接到 Delphi?
更新:好的分配工作需要解决,如果我得到一个 dll 怎么办?我如何将其链接到 Delphi?
【问题讨论】:
标签: delphi delphi-2009
您不能使用 lib 文件从 Delphi 链接到 DLL。 .lib 文件将由 DLL 的 C 或 C++ 客户端使用。
在 Delphi 中,您需要使用 external 关键字手动将 .h 头文件转换为 Pascal 导入单元。 Delphi 源代码中的 Windows.pas 单元的一个示例。不能使用 .lib 文件这一事实其实不是什么大问题,因为无论如何都必须翻译 .h 文件。
【讨论】:
在某些情况下,可以使用对象文件转换器等工具从 Agner Fog(参见 http://www.agner.org/optimize/?e=0,34,36)提取 .lib 文件的成员到 .obj 文件。
语法是
objconv.exe libname.lib -lx
提取所有成员。
通过提取所有成员,您可以确保没有成员丢失。但是,如果还有其他依赖项(对其他 .lib 文件),这些将无法解析,必须手动解析。
还需要翻译头文件。
注意:目标文件格式也可以转换。 Delphi 只理解 OMF,而 Intel 编译器(例如)只输出 COFF。因此需要进行转换,也可以通过工具完成。
如前所述,这仅在某些情况下有效,并且肯定需要该领域的一些专业知识,因为编译器不会对错误消息提供太多帮助(通常这些消息令人恼火和误导)。
【讨论】: