[VS2010] Debug target afwijkende release includes/linking

Pagina: 1
Acties:

Onderwerpen


  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 13-09 20:47

LauPro

Prof Mierenneuke®

Topicstarter
Sinds een weekje heb ik mij even verdiept in VS2010. Op zich ben ik redelijk wat IDE's gewend alleen ik ben tegen een aantal in mijn ogen vreemde zaken gelopen.

Ik heb een bestaand project waar ik wat aanpassingen maak. Onder het Release-target werkt alles. Echter als ik Debug als target selecteer dan krijg ik vreemde meldingen:
• math.h moet opeens geïnclude worden in een bepaalde file (hoeft onder Release niet).

Een linking probleem:
code:
1
2
3
>libcmtd.lib(crt0dat.obj) : error LNK2005: ___argc already defined in stdafx.obj
1>libcmtd.lib(crt0dat.obj) : error LNK2005: ___wargv already defined in stdafx.obj
1>MSVCRT.lib(MSVCR100.dll) : error LNK2005: _strstr already defined in libcmtd.lib(strstr.obj)
'___argc' komt helemaal niet voor in die file, alleen '__argc', dat kan toch niet uitmaken :? . Deze '___argc' komt uit een USB-lib die middels een DLL geladen wordt, deze kan ik niet zomaar aanpassen want ik heb die code niet.

Die tweede error mbt MSCVRT kan ik niet inkomen, hoe heb ik hier invloed op?

Verder ben ik ook twee uur bezig geweest om er achter te komen dat 'Clean solution' alleen de huidige Build schoon maakt ipv ALLE Builds (Release+Debug) 8)7 . Er stond namelijk bij de Debug build nog verwijzingen naar files van een andere pc. Pas naar het verwijderen van de map Debug was deze error weg.

Bij Project properties staan ALLE instellingen mbt libraries e.d. gelijk. Behalve de specifieke Debug-instellingen. Deze zijn ook allemaal default voor zover ik ze kan overzien.

Hoe kan er verschil zitten tussen een Debug en Release build qua linking? Ik snap hier niets van :? . Ben blij dat ik normaal niet onder Windows dev :P .

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Omdat een debug voor andere doeleinde wordt gebruikt dan een release build is het normaal juist fijn dat je bijvoorbeeld bij een debug build een aantal extra (debug) libraries kunt toevoegen aan je project.

Hoewel ik normaal niet veel in C(++) doe, lijkt mij dat libcmtb.lib voor je linking errors zorgt. Het is op zich niet zo lastig om de debug build gelijk te maken aan de release build, maar als je de twee hetzelfde wilt hebben, waarom ben je dan uberhaupt van de release build geswitched naar de debug build?

If it isn't broken, fix it until it is..


  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 13-09 20:47

LauPro

Prof Mierenneuke®

Topicstarter
Omdat ik misschien mijn project wil debuggen :P . Ik wil steppen door mijn project zodat ik niet als een blinde kip aan het programmeren ben.

Ik snap best dat er iets andere linking is e.d. maar dit zou nooit dit soort problemen op mogen leveren imo.

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!