[GD-General] Re: multiply defined functions in libs
Brought to you by:
vexxed72
From: Andras B. <bn...@ma...> - 2004-06-18 03:08:53
|
[note: I moved this thread to gamedevlists-windows] I'm also fighting with this problem right now. For me the linking error only happened in the debug build (couldn't figure out why). What I did to solve this was to link against LIBC instead of LIBCD (since I don't really need the debug version of that library anyway).. So now I have my own malloc in place, but this brings some other problems: WinMainCRTStartup calls malloc to allocate some memory, and then uses the Win32 API function ::HeapSize to query the size of that same memory block.. So it assumes, that malloc uses ::HeapAlloc with the handle _crtheap, but of course, in this case, it does not (since it is my routine that gets called instead) So, I'm also stuck.. What can I do? Do I have to roll my own crt routines?? This sounds a bit too hardcore. I would have thought that many people use their own memory manager. But how do they solve these things?? Any ideas are welcome! Thanks, Andras > -----Original Message----- > From: gam...@li... > [mailto:gam...@li...] On Behalf Of > Brett Bibby > Sent: Tuesday, June 08, 2004 7:58 PM > To: Gam...@li... > Subject: [GD-General] multiply defined functions in libs > > I have no idea where to ask this quesiton, so I guess general might be > okay. > > Recently I have switched our memory management to Doug Lea's malloc and so > far so good. The biggest problem is that I'm trying to drop in and > replace > the normal ansi calls. This generally works although with different side > effects on different platforms. For example, CodeWarrior's linker emits a > warning that multiple "malloc" symbols are defined on Win32, but correctly > chooses to use mine anyway if I set the link order correctly, and emits no > warnings at all on PS2 and GCN and seems to use mine silently (although > the > original malloc is listed in the linker map, just unused!). On MSVC it is > an error and won't build the Win32 version. Since we have 18 target > builds > across mutliple platforms this is messy. I can't remove the offending > libraries without also removing a bunch of needed functions as they are > built into a single library. > > Is there any sort of pragma or some other way to make sure that all > references to memory management functions only see my definition? It > seems > that many people must have done this before.... > > If not, the only way I see to fix this properly is to build custom release > and debug libs from each platform's source and exclude the functions I > want > to remove <shudder>. > > Brett > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: GNOME Foundation > Hackers Unite! GUADEC: The world's #1 Open Source Desktop Event. > GNOME Users and Developers European Conference, 28-30th June in Norway > http://2004/guadec.org > _______________________________________________ > Gamedevlists-general mailing list > Gam...@li... > https://lists.sourceforge.net/lists/listinfo/gamedevlists-general > Archives: > http://sourceforge.net/mailarchive/forum.php?forum_id=557 |