Groups > Borland > Borland C plus plus builder command line tools > Re: linking with free tools




linking with free tools

linking with free tools
Fri, 28 Mar 2008 13:44:46 -070
Hi,
I have some libraries and dll's that I made with BCB6.

I wonder, I have a costumer that want to use the libraries using the 
free tools from codegear.

I have a small test program that I can make on a platform using the BCB6 
configuration. The program links in my own libraries correctly.

On another machine, I have the free codegear stuff. When trying to make 
the same code (same makefile) on that, I get unresolved externals from 
my own libraries.

Do I have to do an implib from the DLL on or something like that?

thanks
Post Reply
Re: linking with free tools
Fri, 28 Mar 2008 15:54:22 -070
Totte Karlsson wrote:

>I have some libraries and dll's that I made with BCB6.
>On another machine, I have the free codegear stuff. When trying to make 
>the same code (same makefile) on that, I get unresolved externals from 
>my own libraries.

Are you using any VCL functions?
The free 5.5 commandline doesn't include VCL.

And, as always, include the exact error messages.

Post Reply
Re: linking with free tools
Sun, 30 Mar 2008 14:44:53 -070
Thanks,
Well, no VCL stuff is included
The unresolved externals are functions from my own library,


Here is part of the output from make

MAKE Version 5.2  Copyright (c) 1987, 2000 Borland
	C:\PROGRA~1\CodeGear\RADSTU~1\5.0\bin\..\BIN\ilink32 @MAKE0000.@@@
Turbo Incremental Link 5.80 Copyright (c) 1997-2007 CodeGear
Error: Unresolved external 'mtkIniParameters::ReadIniFile(const 
std::basic_string<char, std::char_traits<char>,
std::allocator<char> >&, 
const std::basic_string<char, std::char_traits<char>, 
std::allocator<char> >&)' referenced from 
C:\T2BIOSYSTEMS\LIB\CPMGPULSEPROGRAM.OBJ
Error: Unresolved external 'std::basic_string<char, 
std::char_traits<char>, std::allocator<char> >::__nullref'
referenced 
from C:\T2BIOSYSTEMS\PULSE_PROGRAMS\CPMG\CPMG.OBJ
Error: Unresolved external 'GetFormattedParStr(const 
std::basic_string<char, std::char_traits<char>,
std::allocator<char> >&, 
const double, const int)' referenced from ............


The first unresolved external mtkIniParameters is in a library file 
mtkCommonD60.lib and corresponding dll is called  mtkCommonD60.dll.
when I did a tdump on mtkCommonD60.dll the function seems to be there

Under exports in tdumps output is
     00014724  224 00C0 mtkIniParameters::ReadIniFile(const 
_STL::basic_string<char, _STL::char_traits<char>,
_STL::allocator<char> 
 >&, const _STL::basic_string<char, _STL::char_traits<char>, 
_STL::allocator<char> >&)

Don't get it why it can't find the functions.
However, there seems to be another problem. Some std stuff seems to be 
unresolved as well.

Any clues?


-totte




Bob Gonder wrote:
> Totte Karlsson wrote:
> 
>> I have some libraries and dll's that I made with BCB6.
>> On another machine, I have the free codegear stuff. When trying to make

>> the same code (same makefile) on that, I get unresolved externals from

>> my own libraries.
> 
> Are you using any VCL functions?
> The free 5.5 commandline doesn't include VCL.
> 
> And, as always, include the exact error messages.
> 
Post Reply
Re: linking with free tools
Mon, 31 Mar 2008 07:04:32 -070
Totte Karlsson wrote:

>Don't get it why it can't find the functions.
>However, there seems to be another problem. Some std stuff seems to be 
>unresolved as well.

Um, yeah.
5.5 used Rogue Wave STL.
5.6 used a different STL
2006/2007 uses Dinkumware.

That's why you don't put naked classes in DLLs.
They aren't compatable.

>Turbo Incremental Link 5.80 Copyright (c) 1997-2007 CodeGear

You are also using the 2007 linker.
So you are mixing tools from 3 generations.
BCB6 DLL
BCB5 main
2007 Linker

>Any clues?

Recompile the DLL with the 5.5 commandine compiler.
Use the 5.5 Linker

Post Reply
Re: linking with free tools
Mon, 31 Mar 2008 09:12:36 -070
Thanks,
I'll look into that. But how does the stl classes end up in the dll in the first
place though?

Is 5.6 using STLPort?

-totte


Bob Gonder wrote:
> Totte Karlsson wrote:
> 
>> Don't get it why it can't find the functions.
>> However, there seems to be another problem. Some std stuff seems to be

>> unresolved as well.
> 
> Um, yeah.
> 5.5 used Rogue Wave STL.
> 5.6 used a different STL
> 2006/2007 uses Dinkumware.
> 
> That's why you don't put naked classes in DLLs.
> They aren't compatable.
> 
>> Turbo Incremental Link 5.80 Copyright (c) 1997-2007 CodeGear
> 
> You are also using the 2007 linker.
> So you are mixing tools from 3 generations.
> BCB6 DLL
> BCB5 main
> 2007 Linker
> 
>> Any clues?
> 
> Recompile the DLL with the 5.5 commandine compiler.
> Use the 5.5 Linker
> 
Post Reply
<< Previous 1 2 3 Next >>
( Page 1 of 3 )
about | contact