我如何 link DCC32 在 C++builder 中使用选项 -JL 生成的静态库?

How can I link a static lib generated by DCC32 with the option -JL in C++builder?

我正在尝试在我的 C++ Builder 项目中使用静态库。该库是通过使用 DCC32 编译 Delphi 带有 -JL 选项的源代码创建的。我的 Delphi 源代码被设计为一个 "Designtime and runtime" 包,这意味着所有代码都内置在一个包中。我想知道如何在我们的 C++ Builder 项目中使用这个静态库?提前致谢。

正如 David 所说,Delphi 编译器根本无法创建静态 lib 文件。您尝试 link 的是 为 designtime/runtime 包导入库

Delphi(和 C++Builder)包不是静态库,它们是带有大量板载额外信息的 DLL,这使得 Delphi 和 C++Builder 代码很容易到 link 到他们和里面的类型。它们或多或少等同于 C# 程序集(猜猜 C# 人从哪里得到这个想法 ;-)。

要使用这样的包,如果你真的想要使用它们,select项目选项中的"build with packages"选项和select 这个包也是。

但是,如果您想创建一个独立的应用程序,则无需使用包进行构建,Pascal 文件会link进入您的应用程序,就好像它们来自静态文件一样图书馆。但不是指定一个 lib 文件,您只需在项目管理器中指定 .pas 文件,即您只需添加一堆 .pas (或 .obj) 文件直接添加到您的应用程序。

该项目将负责编译 Pascal 文件并将它们link发送到您的应用程序。

请注意,要将 组件 安装到 IDE,您需要一个设计时包(可能 link 到运行时包)。但是您的应用程序不需要软件包。

这些是供您考虑的一些步骤:

  1. 使用-JP生成obj文件
  2. 将这些 obj 文件添加到 link step into your ilink32 command

如果您使用 IDE 而没有使用 which ilink32 参数,那么您可以考虑使用 procexp 或 procmon 来查看这些参数。