HILFE! Haufen an Fehlern mit Exceptions!
-
Hallo, ich habe hier eine Menge an Fehlern:
[BCC32 Fehler] Projekt.cpp(36): E2015 Mehrdeutigkeit zwischen 'Exception' und 'Sysutils::Exception'
[BCC32 Fehler] Projekt.cpp(39): E2034 Konvertierung von 'Exception *' nach 'Sysutils::Exception *' nicht möglich
[BCC32 Fehler] Projekt.cpp(39): E2342 Keine Übereinstimmung des Typs beim Parameter 'E' ('Sysutils::Exception *' erwartet, 'Exception *' erhalten)
[BCC32 Fehler] Projekt.cpp(45): E2015 Mehrdeutigkeit zwischen 'Exception' und 'Sysutils::Exception'
[BCC32 Fehler] Projekt.cpp(45): E2352 Instanz der abstrakten Klasse 'Exception' kann nicht erzeugt werden
[BCC32 Fehler] Projekt.cpp(45): E2353 Klasse 'Exception' ist abstrakt, weil '__stdcall Exception::get_Application(_Application *= 0'
[BCC32 Fehler] Projekt.cpp(45): E2285 Keine Übereinstimmung für 'Exception::Exception(const char *)' gefunden
[BCC32 Fehler] Projekt.cpp(45): E2031 Typumwandlung von 'const char *' nach 'Exception' nicht zulässig
[BCC32 Fehler] Projekt.cpp(47): E2015 Mehrdeutigkeit zwischen 'Exception' und 'Sysutils::Exception'
[BCC32 Fehler] Projekt.cpp(49): E2034 Konvertierung von 'Exception *' nach 'Sysutils::Exception *' nicht möglich
[BCC32 Fehler] Projekt.cpp(49): E2342 Keine Übereinstimmung des Typs beim Parameter 'E' ('Sysutils::Exception *' erwartet, 'Exception *' erhalten)Hier ist der Code:
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include <tchar.h> //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int) { try { Application->Initialize(); Application->MainFormOnTaskBar = true; Application->Title = "Datenverwaltung"; Application->CreateForm(__classid(TMainForm), &MainForm); Application->CreateForm(__classid(TDatenModul), &DatenModul); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } catch (...) { try { throw Exception(""); } catch (Exception &exception) { Application->ShowException(&exception); } } return 0; } //---------------------------------------------------------------------------
-
Zeig mal Projekt.cpp .
-
naja das war die projekt.cpp aber hier nochmal ganz:
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include <tchar.h> //--------------------------------------------------------------------------- USEFORM("BetPartNeuFrm.cpp", BetPartNeuForm); USEFORM("SasNeuFrm.cpp", SasNeuForm); USEFORM("AsBearbeitenFrm.cpp", AsBearbeitenForm); USEFORM("AuftragBearbeitenFrm.cpp", AuftragBearbeitenForm); USEFORM("LeistPosStammFrm.cpp", LeistPosStammForm); USEFORM("RechUebersichtFrm.cpp", RechUebersichtForm); USEFORM("AGStammFrm.cpp", AGStammForm); USEFORM("LoginFrm.cpp", LoginForm); USEFORM("AnwenderStammFrm.cpp", AnwenderStammForm); USEFORM("DatenModulFrm.cpp", DatenModul); /* TDataModule: File Type */ USEFORM("RegStammFrm.cpp", RegStammForm); USEFORM("RechErstellenFrm.cpp", RechErstellenForm); USEFORM("AuftragNeuFrm.cpp", AuftragNeuForm); USEFORM("MainFrm.cpp", MainForm); USEFORM("SBStammFrm.cpp", SBStammForm); USEFORM("RasNeuFrm.cpp", RasNeuForm); USEFORM("LeistManFrm.cpp", LeistManForm); USEFORM("AsTerminFrm.cpp", AsTerminForm); //--------------------------------------------------------------------------- WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int) { try { Application->Initialize(); Application->MainFormOnTaskBar = true; Application->Title = "Datenverwaltung"; Application->CreateForm(__classid(TMainForm), &MainForm); Application->CreateForm(__classid(TDatenModul), &DatenModul); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } catch (...) { try { throw Exception(""); } catch (Exception &exception) { Application->ShowException(&exception); } } return 0; } //---------------------------------------------------------------------------
-
Es sieht so aus, als sei die Ursache des Fehlers ein gemeinsam für das Projekt generierter PCH (folglich wirst du C++Builder 2007 oder höher verwenden), der unter anderem den Header einer Typbibliothek enthält, die ihrerseits eine Klasse namens Exception definiert. Der Konflikt entsteht deshalb:
#if !defined(NO_IMPLICIT_NAMESPACE_USE) using namespace Access_2k; #endif
Das steht aus nicht bekanntem Grunde in allen automatisch generierten Typbibliotheks-Headerdateien, und die offensichtliche Lösung ist, in den Projektoptionen NO_IMPLICIT_NAMESPACE_USE zu definieren und deinen Code zur expliziten Verwendung des Namespaces anzupassen (oder alternativ in der Datei, die den TLB-Header einbindet, explizit
using namespace whatever
zu verwenden).
-
zufällig benutze ich wirklich eine neuere ausgabe! nämlich den 2009er.
es ist auch dieser code in einer header-datei:#if !defined(NO_IMPLICIT_NAMESPACE_USE) using namespace Outlook_xp; #endif
was genau muss ich hier jetzt ändern? bzw. in den projektoptionen??
-
Hallo, also irgendwie bekomm ich das nich hin
ich hatte jetzt mal ausprobiert "using namespace whatever" hinzuschreiben, aber dann sagt er mir, er will einen Namespace haben.
Ich weiß ni ht, was ich da machen soll!
-
Hi,
unabhängig davon lies dir bitte diesen Artikel von Embarcadero durch:
Release-Hinweise für CodeGear Delphi und C++Builder 2009
Kurzes Zitat:
embarcadero schrieb:
Bekannte Probleme
...
IDE-Unterstützung für Unicode-Zeichen, die nicht im Basic Multilingual Plane enthalten sind
Dynamische Link-RTL kann beim dynamischen Laden einer DLL nicht verwendet werden
NO_STRICT #define muss bei der GdiPlus-Bibliothek ausgeschaltet sein
NO_STRICT #define sollte mit der VCL ausgeschaltet sein
...Schau mal in deine Projektoptionen, was da steht.
mfg
kpeter
-
Also ich habe mir den Artikel abgeschaut, aber jetzt nicht unbedingt was wirklich nützliches finden können, was mir da weiterhilft...