我正在尝试在我的C ++ Builder项目中使用静态库。该库是通过使用DCC32编译带有-JL选项的Delphi源代码而创建的。我的Delphi源代码被设计为“设计时和运行时”包,这意味着所有代码都内置在一个包中。我想知道如何在我们的C ++ Builder项目中使用此静态库?提前致谢。
正如David所说,Delphi编译器根本无法创建静态lib文件。您想链接的是设计时/运行时包的导入库。
Delphi(和C ++ Builder)软件包不是静态库,它们是带有很多附加信息的DLL,这使得Delphi和C ++ Builder代码可以轻松链接到它们和内部类型。它们或多或少等同于C#程序集(猜测C#的人是从哪里想到的;-)。
要使用这样的软件包,如果您确实要使用它们,请从项目选项中选择“使用软件包构建”选项,然后也选择此软件包。
但是,如果您要创建一个独立的应用程序,则无需使用软件包进行构建,并且Pascal文件会链接到您的应用程序,就像它们来自静态库一样。但是,您无需指定一个lib文件,而只需在项目管理器中指定.pas文件,即您只需将一堆.pas(或.obj)文件直接添加到应用程序中即可。
该项目将负责编译Pascal文件并将其链接到您的应用程序。
请注意,要将组件安装到IDE中,您需要一个设计时软件包(并且可能会链接到运行时软件包)。但是,您的应用程序不需要软件包。
感谢您的回答。您是否知道使用DCC32(BPL,BPI,LIB)的输出创建单个独立应用程序的任何方法?* .pas或* .obj对我不可用。
您可以使用LIB文件链接到BPL。但是请注意,BPL非常特定于版本,因此使用一个版本生成的BPL不能被使用另一版本创建的应用程序使用。这就是为什么我通常在BPL后缀编译器版本(不带点),例如对于Rio,我使用后缀260,如myNewPackage260.bpl