Thread View: be.comp.programming
5 messages
5 total messages
Started by Ivan Van den Bossche
Thu, 17 Jul 2003 19:04
Compilermeldingen in Visual C++ .NET
Author: Ivan Van den Bossche
Date: Thu, 17 Jul 2003 19:04
Date: Thu, 17 Jul 2003 19:04
26 lines
2456 bytes
2456 bytes
Hi, Ik krijg de volgende meldingen in Visual C++ .NET tijdens het compileren van een project: d:\backup\IVB\PrintOnDemand SERVICE\PODService\main.cpp(167): warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data d:\backup\IVB\PrintOnDemand SERVICE\PODService\main.cpp(178): warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data PODService error LNK2005: _malloc already defined in LIBC.lib(malloc.obj) PODService error LNK2005: _free already defined in LIBC.lib(free.obj) PODService error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in LIBC.lib(typinfo.obj) PODService error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in LIBC.lib(typinfo.obj) PODService warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library PODService fatal error LNK1169: one or more multiply defined symbols found Weet er iemand hoe ik deze meldingen weg kan krijgen? Alvast bedankt Ivan Van den Bossche
Re: Compilermeldingen in Visual C++ .NET
Author: Pieter Philippaerts
Date: Thu, 17 Jul 2003 20:21
Date: Thu, 17 Jul 2003 20:21
29 lines
2783 bytes
2783 bytes
"Ivan Van den Bossche" <ivan.van.den.bossche@pandora.be> wrote in message > d:\backup\IVB\PrintOnDemand SERVICE\PODService\main.cpp(167): warning C4267: > 'argument' : conversion from 'size_t' to 'int', possible loss of data size_t is een uint, dus bij het converteren van uint naar int kan je data verliezen. > PODService error LNK2005: _malloc already defined in LIBC.lib(malloc.obj) > PODService error LNK2005: _free already defined in LIBC.lib(free.obj) > PODService error LNK2005: "private: __thiscall type_info::type_info(class > type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in > LIBC.lib(typinfo.obj) > PODService error LNK2005: "private: class type_info & __thiscall > type_info::operator=(class type_info const &)" > (??4type_info@@AAEAAV0@ABV0@@Z) already defined in LIBC.lib(typinfo.obj) > PODService warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other > libs; use /NODEFAULTLIB:library > PODService fatal error LNK1169: one or more multiply defined symbols found Uit de bovenstaande fouten leid ik af dat je je project met twee verschillende C runtimes wil linken [namelijk libc.lib en msvcrt.lib]. De link met msvcrt wordt automatisch gedaan. Oplossing hiervoor is [1] ofwel niet linken met libc.lib [2] ofwel compilen met de NODEFAULTLIB optie, zoals de error message aangeeft. Mvg, Pieter Philippaerts
Re: Compilermeldingen in Visual C++ .NET
Author: Sjoerd Schreuder
Date: Thu, 17 Jul 2003 20:27
Date: Thu, 17 Jul 2003 20:27
62 lines
4124 bytes
4124 bytes
Ivan Van den Bossche wrote: > Ik krijg de volgende meldingen in Visual C++ .NET tijdens het compileren van > een project: > > d:\backup\IVB\PrintOnDemand SERVICE\PODService\main.cpp(167): warning C4267: > 'argument' : conversion from 'size_t' to 'int', possible loss of data > d:\backup\IVB\PrintOnDemand SERVICE\PODService\main.cpp(178): warning C4267: > 'argument' : conversion from 'size_t' to 'int', possible loss of data Dit zijn warnings van de compiler. Je gebruikt ergens een int om een waarde op te slaan die officieel van het type 'size_t' is en die kan grotere getallen bevatten dan een int aankan. Waarschijnlijk komt die size_t van een sizeof() of zoiets. Maar goed, wat je doet is officieel wel toegestaan door de C++ standaard, ook al kan het in de praktijk "verkeerde" resultaten opleveren. C++ wordt vanwege dit soort zaken wel eens als onveilig gezien. Gelukkig zijn er warnings. Warnings zijn meestal wel een indicatie om ergens nog eens naar te kijken, want niet alles wat mag is ook altijd verstandig om te doen. > PODService error LNK2005: _malloc already defined in LIBC.lib(malloc.obj) > PODService error LNK2005: _free already defined in LIBC.lib(free.obj) > PODService error LNK2005: "private: __thiscall type_info::type_info(class > type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in > LIBC.lib(typinfo.obj) > PODService error LNK2005: "private: class type_info & __thiscall > type_info::operator=(class type_info const &)" > (??4type_info@@AAEAAV0@ABV0@@Z) already defined in LIBC.lib(typinfo.obj) > PODService warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other > libs; use /NODEFAULTLIB:library > PODService fatal error LNK1169: one or more multiply defined symbols found Het klinkt alsof je de standaard library twee keer mee probeert te linken. Normaal wordt de standaard library al wel meegelinkt, maar blijkbaar doe je dat nog een tweede keer en dan gaat de compiler klagen dat hij die functie al kent. Het gaat om de functies malloc() en free() en de klasse type_info. Ik heb zulke problemen ook bij MSVC 6.0 meegemaakt, en toen kwam dit doordat er een debug library werd meegelinkt in een release build, of omgekeerd. Ergens staat er in de projectsettings iets waardoor dit komt. Welke settings zou ik niet zo kunnen zeggen. Die /NODEFAULTLIB optie zou ik niet gebruiken: dat is alleen noodzakelijk als je de normale library niet wilt gebruiken. Er zijn uitzonderlijke situaties waarin je dat zou willen (je kunt die 300 bytes extra niet missen of iets dergelijks), maar gezien je vraag zul je je daar echt niet bezig (mogen) houden. Probeer eens een vers project aan te maken en dan alle source files daaraan toe te voegen; En kijk vervolgens met een filediff naar de twee project files. Misschien kun je zo opsporen welke setting verkeerd staat. Sjoerd Schreuder
Re: Compilermeldingen in Visual C++ .NET
Author: Ivan Van den Bossche
Date: Fri, 18 Jul 2003 07:19
Date: Fri, 18 Jul 2003 07:19
79 lines
4521 bytes
4521 bytes
Hey, Weet er iemand waar ik deze instellingen kan wijzigen in Visual C++ .NET? Bedankt Ivan "Sjoerd Schreuder" <sa_schreuder@wanadoo.nl> wrote in message news:3F17074C.F3725A6A@wanadoo.nl... > > > Ivan Van den Bossche wrote: > > Ik krijg de volgende meldingen in Visual C++ .NET tijdens het compileren van > > een project: > > > > d:\backup\IVB\PrintOnDemand SERVICE\PODService\main.cpp(167): warning C4267: > > 'argument' : conversion from 'size_t' to 'int', possible loss of data > > d:\backup\IVB\PrintOnDemand SERVICE\PODService\main.cpp(178): warning C4267: > > 'argument' : conversion from 'size_t' to 'int', possible loss of data > > Dit zijn warnings van de compiler. Je gebruikt ergens een int om een waarde > op te slaan die officieel van het type 'size_t' is en die kan grotere > getallen bevatten dan een int aankan. Waarschijnlijk komt die size_t van > een sizeof() of zoiets. > > Maar goed, wat je doet is officieel wel toegestaan door de C++ standaard, > ook al kan het in de praktijk "verkeerde" resultaten opleveren. > > C++ wordt vanwege dit soort zaken wel eens als onveilig gezien. Gelukkig > zijn er warnings. Warnings zijn meestal wel een indicatie om ergens nog > eens naar te kijken, want niet alles wat mag is ook altijd verstandig > om te doen. > > > PODService error LNK2005: _malloc already defined in LIBC.lib(malloc.obj) > > PODService error LNK2005: _free already defined in LIBC.lib(free.obj) > > PODService error LNK2005: "private: __thiscall type_info::type_info(class > > type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in > > LIBC.lib(typinfo.obj) > > PODService error LNK2005: "private: class type_info & __thiscall > > type_info::operator=(class type_info const &)" > > (??4type_info@@AAEAAV0@ABV0@@Z) already defined in LIBC.lib(typinfo.obj) > > > PODService warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other > > libs; use /NODEFAULTLIB:library > > > PODService fatal error LNK1169: one or more multiply defined symbols found > > Het klinkt alsof je de standaard library twee keer mee probeert te linken. > Normaal wordt de standaard library al wel meegelinkt, maar blijkbaar doe > je dat nog een tweede keer en dan gaat de compiler klagen dat hij > die functie al kent. Het gaat om de functies malloc() en free() en > de klasse type_info. > > Ik heb zulke problemen ook bij MSVC 6.0 meegemaakt, en toen kwam dit > doordat er een debug library werd meegelinkt in een release build, > of omgekeerd. > > Ergens staat er in de projectsettings iets waardoor dit komt. Welke > settings zou ik niet zo kunnen zeggen. Die /NODEFAULTLIB optie zou > ik niet gebruiken: dat is alleen noodzakelijk als je de normale > library niet wilt gebruiken. Er zijn uitzonderlijke situaties > waarin je dat zou willen (je kunt die 300 bytes extra niet missen > of iets dergelijks), maar gezien je vraag zul je je daar echt > niet bezig (mogen) houden. > > Probeer eens een vers project aan te maken en dan alle source files > daaraan toe te voegen; En kijk vervolgens met een filediff naar > de twee project files. Misschien kun je zo opsporen welke setting > verkeerd staat. > > Sjoerd Schreuder
Re: Compilermeldingen in Visual C++ .NET
Author: Pieter Philippaerts
Date: Fri, 18 Jul 2003 12:48
Date: Fri, 18 Jul 2003 12:48
5 lines
1649 bytes
1649 bytes
"Ivan Van den Bossche" <i.vandenbossche@vinke.com> wrote in message news:YbNRa.17845$F92.2068@afrodite.telenet-ops.be... > Weet er iemand waar ik deze instellingen kan wijzigen in Visual C++ .NET? Rechter-knop op project -> Properties -> Linker -> Command Line
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads