[vcc vs gcc] shared libraries met of zonder debug info

Pagina: 1
Acties:

  • Punkie
  • Registratie: Oktober 2005
  • Laatst online: 07-11 20:36
Het avontuur begint bij het ontwikkelen van een applicatie die bestaat uit een uitvoerbaar bestand (a.exe) en een shared library (b). Tot zo ver was de ontwikkeling op linux gebeurt met gcc 3.4.3. De shared library wordt hierbij b.so gedoopt en gebuild met de -g optie om te kunnen debugen. Het bestand a.exe wordt gebouwd *zonder* debug informatie. Alles lukt prima op deze manier.

Bij het compileren onder windows met de vc 7.1 compiler worden zowel de library (b.dll) als a.exe zonder debug gemaakt. Indien men van enkel b.dll een debugversie maakt en dan het programma opstart gaat ie onverbiddelijk onderuit. Een niet debug programma met een debug dll gaat hier compleet de mist in, in tegenstelling tot linux die lustig voort werkt.

Is dit het gewenste gedrag? Waar zit dan het verschil tussen de win en de linux methode?
Is er een manier om een mix van debug en niet debug componenten juist te laten werken op windows?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 07:20

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je haalt wat dingen door elkaar. In VC++ heb je een speciale debug runtime, dat zijn dus de debug varianten van alle standaard functies en classes. Ik denk dat je je wel voor kan stellen dat het gruwelijk fout gaat als je de runtimes gaat mixen in dezelfde applicatie.

Dit heeft echter weinig te maken met of je dll zelf met debug info en zonder optimalisaties compilet, alleen zijn deze settings wel aan elkaar gelinkt als je simpelweg voor "debug" kiest in je solution configuration. Je zult dus handmatig in moeten stellen dat hij compilet met debug info en zonder optimalisaties, terwijl je wel gewoon tegen de release versie van de runtime linkt.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.