Watch, Follow, &
Connect with Us

For forums, blogs and more please visit our
Developer Tools Community.


Welcome, Guest
Guest Settings
Help

Thread: BCC32C Berlin 10.1 Up1 ilink32 Error VCL.IMAGING.JPEG.LIB


This question is not answered. Helpful answers available: 2. Correct answers available: 1.


Permlink Replies: 5 - Last Post: Oct 9, 2016 4:50 PM Last Post By: Alejandro Comes
Brett Wilton

Posts: 45
Registered: 10/1/11
BCC32C Berlin 10.1 Up1 ilink32 Error VCL.IMAGING.JPEG.LIB  
Click to report abuse...   Click to reply to this thread Reply
  Posted: Sep 24, 2016 5:10 PM
Trying to compile an application with BCC32C 10.1 Update 1 and I'm getting the error on link

"ulink32 Error: Fatal: Unable to open file 'VCL.IMAGING.JPEG.LIB"

I see others have had this issue with PNG.

This application compiles with BCC32 no problem.

Anyone have a solution ?

Edited by: Brett Wilton on Sep 24, 2016 5:11 PM
Brett Wilton

Posts: 45
Registered: 10/1/11
Re: BCC32C Berlin 10.1 Up1 ilink32 Error VCL.IMAGING.JPEG.LIB  
Click to report abuse...   Click to reply to this thread Reply
  Posted: Sep 24, 2016 9:53 PM   in response to: Brett Wilton in response to: Brett Wilton
Managed to get it to compile.

It seems the bcc32c for some reason is adding LIB rather than using OBJ like the bcc32.

Maybe this is a linker bug ?

Vcl.Imaging.jpeg.hpp has : -

#pragma link "Vcl.Imaging.pngimage"

It did not work setting the extension explicitly to : -

#pragma link "Vcl.Imaging.pngimage.obj"

So if added the following to Vcl.Imaging.jpeg.hpp, Vcl.Imaging.GIFimg.hpp and Vcl.Imaging.pngimage.hpp around each respective pragma link : -

#if defined(__BORLANDC__) && !defined(__clang__)
#pragma link "Vcl.Imaging.jpeg"
#endif
Brett Wilton

Posts: 45
Registered: 10/1/11
Re: BCC32C Berlin 10.1 Up1 ilink32 Error VCL.IMAGING.JPEG.LIB  
Click to report abuse...   Click to reply to this thread Reply
  Posted: Sep 25, 2016 6:17 PM   in response to: Brett Wilton in response to: Brett Wilton
I found adding the OBJ extension did in fact work, long day.

So in the three header files I added something like : -

#if defined(__BORLANDC__) && defined(__clang__) && defined(_WIN32) && !defined(_WIN64)
#pragma link "Vcl.Imaging.jpeg.obj"
#else
#pragma link "Vcl.Imaging.jpeg"
#endif

I'm unable to replicate in a test project so maybe I need to rebuild this one again.

I did rebuild in 10.1 so maybe 10.1.1 is not compatible !
Remy Lebeau (Te...


Posts: 9,447
Registered: 12/23/01
Re: BCC32C Berlin 10.1 Up1 ilink32 Error VCL.IMAGING.JPEG.LIB  
Click to report abuse...   Click to reply to this thread Reply
  Posted: Sep 26, 2016 11:24 AM   in response to: Brett Wilton in response to: Brett Wilton
Brett wrote:

I found adding the OBJ extension did in fact work, long day.

You should not need that at all. By omitting the extension, the compiler
choses the appropriate extension based on the platform being compiled for.
This is documented behavior:

http://docwiki.embarcadero.com/RADStudio/Berlin/en/Pragma_link

Do not specify the file extension (.ext) of modulename, as long as you are
using default file types. The linkers assume the following default values
for the file extension (.ext) of modulename:

.obj extension for BCC32

.o extension for:
Clang-enhanced C++ compilers
BCCOSX

So if you omit the .ext, then the correct extension is automatically used
according to your current target platform.

Of course, it is certainly possible that they broken (or more accurately,
did not implement) this feature when they introduced the bcc32c compiler.

--
Remy Lebeau (TeamB)
Brett Wilton

Posts: 45
Registered: 10/1/11
Re: BCC32C Berlin 10.1 Up1 ilink32 Error VCL.IMAGING.JPEG.LIB  
Click to report abuse...   Click to reply to this thread Reply
  Posted: Sep 26, 2016 2:10 PM   in response to: Remy Lebeau (Te... in response to: Remy Lebeau (Te...
Of course, it is certainly possible that they broken (or more accurately,
did not implement) this feature when they introduced the bcc32c compiler.

Hey Remy, always great to read your responses.

Yes I did read that section of the wiki and did note that it doesn't expressly mention the bcc32c compiler itself.

Omitting the extension should work (as you say) but doesn't for this particular project.

I was going to file a QC for this but as mentioned my test project works correctly with the original headers.

I need to try and figure out why its doing this for this project when this header file is included.

This project was originally rebuild from XE6 into 10.1 but going to update 1 I just opened the 10.1 project and didn't rebuild.
Alejandro Comes

Posts: 1
Registered: 10/16/11
Re: BCC32C Berlin 10.1 Up1 ilink32 Error VCL.IMAGING.JPEG.LIB  
Click to report abuse...   Click to reply to this thread Reply
  Posted: Oct 9, 2016 4:50 PM   in response to: Brett Wilton in response to: Brett Wilton
A few late, but I could reproduce it using pre-compiled headers; both, the problem and your workaround.

Brett Wilton wrote:
I found adding the OBJ extension did in fact work, long day.

So in the three header files I added something like : -

#if defined(__BORLANDC__) && defined(__clang__) && defined(_WIN32) && !defined(_WIN64)
#pragma link "Vcl.Imaging.jpeg.obj"
#else
#pragma link "Vcl.Imaging.jpeg"
#endif

I'm unable to replicate in a test project so maybe I need to rebuild this one again.

I did rebuild in 10.1 so maybe 10.1.1 is not compatible !
Legend
Helpful Answer (5 pts)
Correct Answer (10 pts)

Server Response from: ETNAJIVE02