Vladislav Rastrusny
Vladislav Rastrusny

Reputation: 30013

Compile Delphi component package (bpl) for different Delphi versions

The situation is the following. Typically I use RAD Studio 2010 for Delphi development. I have some components I would like to redistribute in binary form (*.bpl without source). But I would like people to be able to use them despite of their Delphi version. But, for example, dcu files can be used only by compiler version, which generated them. Almost the same situation is with bpl files as I know. Every bpl file will require corresponding VCLXX.bpl library depending on Delphi version. How do I make my bpls, compiled in 2010 to be able to be used in Delphi7, 2007 etc?

Is the only solution to have ALL Delphi versions installed and compile bpl files separately in each?

Upvotes: 7

Views: 8844

Answers (4)

Remko
Remko

Reputation: 7340

You could create an obj file in c++ builder and link that in Delphi, distribute a small pas file (header). The c++ builder obj format hasn'tchanged from delphi 7 to 2009 (I can confirm 2010 but I think it will be the same as well).

You would need to test though if this would be possible for visual/designtime components.

Upvotes: 1

Rodrigo Farias Rezino
Rodrigo Farias Rezino

Reputation: 2799

I can create an installer that get the the installed Delphi versions on machine. Choose for witch Delphi you want to create de bpl and call the correspondent Dcc by command line to generate the correspondents bpl and install in Delphi. You can look in JVCL installer to get as example.

Att.

Upvotes: 0

Rob Kennedy
Rob Kennedy

Reputation: 163357

To distribute compiled code that can be used by multiple compiler versions, distribute an ordinary DLL, not a BPL. Packages and units are version-specific.

Create standalone functions that you export in the C style, or create COM objects that get registered with the OS.

It doesn't have to change your entire development strategy, though; it could be a DLL that uses the BPL, so you can keep all the work you've already put into the package.

Upvotes: 4

Mason Wheeler
Mason Wheeler

Reputation: 84650

Yes, that's the only solution. Each compiler produces DCUs and BPLs specific to it's own version. The only exception I'm aware of is that Delphi 2006 and 2007 share the same format.

Upvotes: 7

Related Questions