🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #4631

Re: Compilermeldingen in Visual C++ .NET

#4631
From: Sjoerd Schreuder
Date: Thu, 17 Jul 2003 20:27
62 lines
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
Technical Details
Message-ID: <3F17074C.F3725A6A@wanadoo.nl>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-05!sn-xit-08!supernews.com!newsfeed.news2me.com!newsfeed.icl.net!newsfeed.fjserv.net!skynet.be!skynet.be!213.51.129.3.MISMATCH!newshub1.home.nl!home.nl!news2.euro.net!cleanfeed.casema.net!castor.casema.net.POSTED!53ab2750!not-for-mail
References: <MqCRa.16688$F92.2067@afrodite.telenet-ops.be>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: 107324,4b80f0c22f2ea67f
X-Google-Attributes: gid107324,public
X-Google-Thread: fcea4,4b80f0c22f2ea67f
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2003-07-17 13:27:17 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-05!sn-xit-08!supernews.com!newsfeed.news2me.com!newsfeed.icl.net!newsfeed.fjserv.net!skynet.be!skynet.be!213.51.129.3.MISMATCH!newshub1.home.nl!home.nl!news2.euro.net!cleanfeed.casema.net!castor.casema.net.POSTED!53ab2750!not-for-mail
Message-ID: <3F17074C.F3725A6A@wanadoo.nl>
From: Sjoerd Schreuder <sa_schreuder@wanadoo.nl>
X-Mailer: Mozilla 4.7 [en] (Win98; I)
X-Accept-Language: en
MIME-Version: 1.0
Newsgroups: be.comp.programming,nl.comp.programmeren
Subject: Re: Compilermeldingen in Visual C++ .NET
References: <MqCRa.16688$F92.2067@afrodite.telenet-ops.be>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Lines: 62
Date: Thu, 17 Jul 2003 20:27:15 GMT
NNTP-Posting-Host: 213.17.100.152
X-Trace: castor.casema.net 1058473635 213.17.100.152 (Thu, 17 Jul 2003 22:27:15 MEST)
NNTP-Posting-Date: Thu, 17 Jul 2003 22:27:15 MEST
Organization: Wanadoo NL