On closer look, the problem seems to be that strtod is defined at least
twice, once in <stdlib.h> and another time in dtoa-config.c and those
definitions are different (i.e. one is gay_strtod and the other is not).
How can this work when it comes to link? Surely only one can be used? Some
of the object modules are using the definition in <stdlib.h> and others use
the one in dto-config.c.
This is the definition in <stdlib.h>:
#if !defined __NO_ISOCEXT /* in libmingwex.a */
double __cdecl __MINGW_NOTHROW __strtod (const char*, char**);
#ifdef __cplusplus
/* We require a function with external linkage. */
#else
static
#endif /* Not __cplusplus */
double __cdecl __MINGW_NOTHROW strtod (const char* __restrict__ __nptr,
char** __restrict__ __endptr)
{ return __strtod(__nptr, __endptr); }
float __cdecl __MINGW_NOTHROW strtof (const char * __restrict__, char **
__restrict__);
long double __cdecl __MINGW_NOTHROW strtold (const char * __restrict__, char
** __restrict__);
#else
_CRTIMP double __cdecl __MINGW_NOTHROW strtod (const char*, char**);
#endif /* __NO_ISOCEXT */
which is clearly different from the one in dto-config.c.
How can this ever work?
Thanks,
-Qu0ll
On Fri, May 22, 2009 at 6:44 PM, Qu0ll <[email protected]> wrote:
> I've had a look at that file but I cannot see anything that needs
> changing. I tried forcing the MinGW options but it didn't help. I am also
> using MinGW 5.1.4 and GCC 3.4.5 so it's a bit puzzling.
>
> Any other thoughts? I really need to get this working :-)
>
> Thanks,
>
> -Qu0ll
> 2009/5/22 Søren Gjesse <[email protected]>
>
>> I am not sure what that is. I guess the problem is related to our dtoa
>> library. Try to take a look as src/dtoa-config.c, and see if additional
>> MinGW related configuration is required. I have no problem building the DLL
>> with MinGW 5.4.1 and GCC 3.4.5.
>> Regards,
>> Søren
>>
>>
>> On Fri, May 22, 2009 at 08:47, Qu0ll <[email protected]> wrote:
>>
>>> Thanks Søren for the prompt reply.
>>>
>>> The bleeding edge patches fix the problem with intptr_t but I still get
>>> the link errors of multiple definitions of _strtod even after applying the
>>> patch you specified to scons.
>>>
>>> Any ideas?
>>>
>>> Thanks,
>>>
>>> -Qu0ll
>>> 2009/5/22 Søren Gjesse <[email protected]>
>>>
>>> Looks as if you are building from trunk. The issue with <inttypes.h>
>>>> was fixed in on bleeding edge r1999 (
>>>> http://code.google.com/p/v8/source/detail?r=1999) which has not yet
>>>> made it to trunk, please check whether this patch matches yours. The
>>>> problem
>>>> with building the shared library is an issue with the build file, try to
>>>> apply the following paths to your SConstruct file.
>>>>
>>>> Index: SConstruct
>>>> ===================================================================
>>>> --- SConstruct (revision 2025)
>>>> +++ SConstruct (working copy)
>>>> @@ -213,7 +213,10 @@
>>>> '-Wno-unused-parameter']
>>>> },
>>>> 'os:win32': {
>>>> - 'WARNINGFLAGS': ['-pedantic', '-Wno-long-long']
>>>> + 'WARNINGFLAGS': ['-pedantic', '-Wno-long-long'],
>>>> + 'library:shared': {
>>>> + 'LIBS': ['winmm', 'ws2_32']
>>>> + }
>>>> },
>>>> 'os:linux': {
>>>> 'WARNINGFLAGS': ['-pedantic'],
>>>>
>>>> Regards, Søren
>>>>
>>>> On Fri, May 22, 2009 at 06:00, Qu0ll <[email protected]> wrote:
>>>>
>>>>> I have just checked out the latest revision of V8 from SVN and tried to
>>>>> build a DLL using MinGW but encountered a couple of problems.
>>>>>
>>>>> The first problem was that the type "intptr_t" which is used in various
>>>>> places in the source was not being recognised. I fixed this by simply
>>>>> including <inttypes.h> in v8.h but maybe this points to some other issue?
>>>>>
>>>>> Anyway, everything then compiles successfully and I am able to build a
>>>>> static library but when I try to build the DLL I get dozens of errors like
>>>>> these:
>>>>>
>>>>> *obj\release\allocation.o:allocation.cc:(.text$strtod+0x0): multiple
>>>>> definition of `_strtod'
>>>>> obj\release\accessors.o:accessors.cc:(.text$strtod+0x0): first defined
>>>>> here
>>>>> obj\release\api.o:api.cc:(.text$strtod+0x0): multiple definition of
>>>>> `_strtod'
>>>>> obj\release\accessors.o:accessors.cc:(.text$strtod+0x0): first defined
>>>>> here
>>>>> obj\release\assembler.o:assembler.cc:(.text$strtod+0x0): multiple
>>>>> definition of `_strtod'
>>>>> obj\release\accessors.o:accessors.cc:(.text$strtod+0x0): first defined
>>>>> here
>>>>> obj\release\ast.o:ast.cc:(.text$strtod+0x0): multiple definition of
>>>>> `_strtod'
>>>>> obj\release\accessors.o:accessors.cc:(.text$strtod+0x0): first defined
>>>>> here
>>>>> obj\release\bootstrapper.o:bootstrapper.cc:(.text$strtod+0x0): multiple
>>>>> definition of `_strtod'
>>>>> obj\release\accessors.o:accessors.cc:(.text$strtod+0x0): first defined
>>>>> here
>>>>> obj\release\builtins.o:builtins.cc:(.text$strtod+0x0): multiple
>>>>> definition of `_strtod'
>>>>> obj\release\accessors.o:accessors.cc:(.text$strtod+0x0): first defined
>>>>> here
>>>>> obj\release\checks.o:checks.cc:(.text$strtod+0x0): multiple definition
>>>>> of `_strtod'
>>>>> obj\release\accessors.o:accessors.cc:(.text$strtod+0x0): first defined
>>>>> here
>>>>> *
>>>>> Can anyone tell me what these errors mean and how to get rid of them?
>>>>>
>>>>> Thanks,
>>>>>
>>>>> -Qu0ll
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>
>> >>
>>
>
--~--~---------~--~----~------------~-------~--~----~
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
-~----------~----~----~----~------~----~------~--~---