delphidelphi-2010bpl

How to figure out what compiler was used for generating Delphi BPL?


I am trying to incorporate bpl files that where given to me into my Delphi project. Note that I am given no documentation on what exports these bpl files contain and which Delphi version was used to generate these bpl files.

According to other Compile Delphi component package (bpl) for different Delphi versions each bpl file can only be used by the same compiler that generated it. So if a Delphi 7 compiler generated the bpl file then only Delphi 7 can import that bpl file (as far as I understand).

I used Detect It Easy in order for me to determine what was used to generate the bpl files. It told me that it was Delphi 6 or 7. This was great news since I have a copy of Delphi 7 on my machine.

But when I tried to load any package that was given to me in Delphi 7 via Component -> Install packages to then add the bpl I always got this strange error:

Cannot load package 'rtl140' It contains unit 'ActiveX' which is also contained in package 'rtl70'

I was a little confused on this error message when I first saw it and since I am new to Delphi I decided to first download Delphi 12 (free trial) and see what will happens if I try and load it up there. I used Component -> Install packages to got this error:

Can't load package The specified module could not be found.

Now what is interesting is that all the bpls that where given to me end with the number 140. What my research told me was that the bpl was compiled with Delphi 2010. I found this table of Delphi version numbers where under "Package Version" of 140 the "Product" was "Delphi 2010".

I am not sure if I am not loading the bpl correctly or if I should be using Delphi 2010 for this project. I am new to Delphi programming.


Solution

  • Hello I am trying to incorporate bpl files that where given to me into my Delphi project. Note that I am given no documentation on what exports these bpl files contain and on what Delphi version was used to generate these bpl files.

    Then you need to contact the BPL author for more detail.

    According to other Stackoverflow post each bpl file can only be used by the same compiler that generated. So if a Delphi 7 Compiler generated the bpl file then only another Delphi 7 Compiler can import that bpl file (As far as I understand).

    That is correct. BPLs are specific to the particular compiler version that created them. They cannot be used on other compiler versions.

    I used Detect it easy in order for me to determine what was used to generate the bpl files. It told me that it was Delphi 6 or 7. This was great news since I have a copy of Delphi 7 on my machine.

    It gave you wrong information.

    But when I tried to load any package that was given to me in Delphi 7 as follows Component -> Install packages and then add the bpl I always got this strange Error.

    Cannot load package 'rtl140' It contains unit 'ActiveX' which is also contained in package 'rtl70'
    

    The fact that it mentions rtl140 means the BPL was not compiled by Delphi 7. The rtl140 package belongs to Delphi 2010 instead.

    Now what is interesting is that all the bpls that where given to me end with the number 140. What my research told me was that the bpl was compiled with Delphi 10. I found this table which under Package Version for 140 was Delphi 10.

    You misread the table. 140 is the package version used by Delphi 2010, not by Delphi 10.x (which used package versions 230-270). 70 was the package version for Delphi 7.

    I am not sure if I am not loading the BPL correctly or if I should be using Delphi 10 for this project.

    Neither. You need Delphi 2010 instead. Otherwise, you need to contact the BPL author and ask for one that is compatible with your particular Delphi version.