[C++]Compile error: C2712: Cannot use __try in ...

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben actief in de MapWindow GIS Open-SOurce community (www.mapwindow.org) en we gaan momenteel over van VS2005 naar VS2008 en daarna van .NET2.0 naar .NET3.5.
1 onderdeel van MapWindow GIS is een ActiveX component die geschreven is in C++. De rest is geschreven in VB.NET en C#.
Met C# red ik me redelijk de laatste tijd, maar met C++ niet.
Als ik de ocx probeer te compileren krijg ik deze foutmelding:
code:
1
2
error C2712: Cannot use __try in functions that require object unwinding    
c:\dev\mapwingis4dev\grid\tkgridraster.cpp  451 MapWinGIS

Als ik dan de code bekijk, zie ik inderdaad een __try staan. Zelfs een aantal keren in de functie. In de rest van de solution wordt geen __try gebruikt wel af en toe try.

Iemand anders van de community kan wel compileren in VS2008, maar hij gebruikt de express editie. Het lijkt wel op een instelling in VS2008.
Uiteraard heb ik al gegoogled, maar dan vind ik alleen post over hoe je __try moet omzetten naar een 'gewone' try.
Ik wil niets wijzigen aan de code, alleen maar compileren.
Of zit er niets anders op dan de code wel te (laten) wijzigen?

Graag advies.

Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

- Je copy/paste naar Google "Cannot use __try in functions that require object unwinding"
- Je klikt de bovenste link aan
- Je lees "With /EHsc, a function with structured exception handling cannot have objects that require unwinding (destruction)."
- Je bekijkt de oplossingen
- Je ziet de laatste "Compile without /EHsc."

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik had die pagina wel al gelezen maar niet helemaal begrepen. Ik heb die compile setting aangepast en nu krijg ik deze melding:
code:
1
A tool returned an error code from "Registering ActiveX Control..."

Ik denk dat ik eerst maar even contact op neem met de C++ programmeur binnen de community.
Bedankt voor nu.

Acties:
  • 0 Henk 'm!

  • MLM
  • Registratie: Juli 2004
  • Laatst online: 12-03-2023

MLM

aka Zolo

__try is voor windows' "structured exception handling", en is origineel gemaakt voor C, niet C++.
1) Je kan je codebase omschrijven naar C++ exception handling (try/catch ipv __try/__except)
2) Je kan functies wrappen (een functie met C++ objecten (en dus unwinding), gecalled door de functie met __try)
3) Je kan met compiler opties frutselen, maar vergeet niet dat die error er niet voor niets was

-niks-