Watch, Follow, &
Connect with Us
Public Report
Report From: Delphi-BCB/IDE/VersionInfo    [ Add a report in this area ]  
Report #:  72811   Status: Open
LIBPREFIX directive interferes with other functionalities
Project:  Delphi Build #:  12.0.3210.17555
Version:    12.1 Submitted By:   Adam Wu
Report Type:  Crash / Data loss / Total failure Date Reported:  4/6/2009 12:58:22 PM
Severity:    Infrequently encountered problem Last Updated: 3/20/2012 2:24:39 AM
Platform:    All versions Internal Tracking #:   269029
Resolution: None (Resolution Comments) Resolved in Build: : None
Duplicate of:  None
Voting and Rating
Overall Rating: No Ratings Yet
0.00 out of 5
Total Votes: None
Description
Version Info:

Basically, if LIBPREFIX directive exists in the .dpr file, the version info part of the project malfunctions.

1. The LIBPREFIX directive causes the "include version information" checkbox in the project options to be disabled, and:
- If the project does not yet have version info, then it cannot be set to have one (until LIBPREFIX directive is manually removed);
- If the project already has version info, then the compiled library will have the version information "stuck" at the last version BEFORE the LIBPREFIX directive was set.

2. When opening a project with missing .res file, normally, the IDE will realize that the .res file is missing and recreate it. But when the LIBPREFIX directive is present, the IDE refuse to generate new .res file for the project.

-----------
Project File References:

If the LIBPREFIX directive appears before the uses clause in the library .dpr file, the IDE project manager seems to stop parsing the following uses clause, and the files referred in the .dpr file are not displayed in the project manager.
Steps to Reproduce:
Create a new DLL

1. Set the version of the DLL to 1.1.0.0, save and compile;
-- the "test.dll" have version of 1.1.0.0, which is expected

2. Enable the library prefix, save and compile;
-- the "prefix.test.dll" have version of 1.1.0.0, which is expected

3. Change the DLL version to 1.2.0.0, save and compile;
-- then new "prefix.test.dll" STILL have version of 1.1.0.0
-- It should have the new version 1.2.0.0

4. Save and close project, then delete the "test.res" file in the project directory. Open the project again:
a) there will be no prompt saying the "test.res" file is created, and
b) the project cannot be compiled because the "test.res" file is missing.

5. Then, delete the LIBPREFIX directive from the DLL's source
-- the instant this directive is gone, the IDE prompts an alert saying the "test.res" file is created.

6. Add some unit file to the project, then, put the LIBPREFIX directive BEFORE the uses clause of the DLL's source;
   Save and close the project, then open the project again:
-- In the project manager window, the unit files that are added to this project do not show up

   Now move the LIBPREFIX directive AFTER the uses clause of the DLL's source;
   Save and close the project, then open the project again:
-- Now, the unit files that are added to this project show up properly in the project manager window
Workarounds
Whenever you need to recreate and/or update the version information of a DLL with libprefix:
1. Open the DLL's source, remove the LIBPREFIX directive,
2. Save all, this allows the IDE to create/update the .res file,
3. Put back the LIBPREFIX directive,
4. Save and compile the project.

Not a scalable solution if you have dozens of libraries... :(
Attachment
None
Comments

Tomohiro Takahashi at 4/6/2009 11:35:01 PM -
> 2. Enable the library prefix, save and compile;
How do you configure the setting? Please provide more detailed Steps.

Adam Wu at 4/16/2009 12:02:27 PM -
1. Go to Project Options window;
2. Go to "Application" page;
3. In the Library name group, type 'Prefix.' in the LIB prefix edit box;
4. Click OK to close the project options window
5. Save by clicking "Save All"

Adam Wu at 4/16/2009 12:15:37 PM -
I've just found out the LIBPREFIX directive is also interfering with the project manager. I have modified the description and steps accordingly.

Tomohiro Takahashi at 4/18/2009 6:02:08 PM -
> 2. Enable the library prefix, save and compile;
>  -- the "prefix.test.dll" have version of 1.1.0.0, which is expected
In my case, version information of "prefix.test.dll" has been set to blank....

Server Response from: ETNACODE01