|
| 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
|
|
|
|
|
|
|
|
|
|