Hallo ich habe mir von der Internetseite codeproject.com das Demo von Xgraph heruntergeladen. Mit Microsoft Visual Studio C++ 2008 (Prof.) habe ich dieses Projekt geöffnet. Beim Übersetzen erscheinen zahlreiche Fehlermeldungen. Wahrscheinlich liegt es daran, dass dieses Projekt ein MFC Projekt ist. Müsste ich in Microsoft Visual Studio C++ 2008 (Prof.) irgendwelche Einstellungen vornehmen? Fehlermeldung: Fehler 1 error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. c:\dokumente und einstellungen\user\desktop\xgraph_demo\include\gfxutils.h 70 XGraphTest
Ich habe nun den Kompiler auf "Als C-Code kompilieren (/TC)" eingestellt. Jetzt erscheint nur eine Fehlermeldung: Fehlermeldung: Fehler 1 fatal error C1189: #error : MFC requires C++ compilation (use a .cpp suffix) c:\programme\microsoft visual studio 9.0\vc\atlmfc\include\afx.h 15 XGraphTest
Das ist zwar nur eine Fehlermeldung, aber eine noch viel schwerwiegendere. Das ist MFC-Code, und MFC-Code erfordert C++. Ein C-Compiler kann das gar nicht übersetzen. Lass also diese falsche Compilereinstellung sein und versuche, das erste Problem zu lösen. Zeile 70 in gfxutils.h ist
1 | operator= (const CRgnEx& copy) { CreateRectRgn(0,0,0,0); CopyRgn((CRgn*) (©)); }; |
Ich glaube nicht, daß die diese Fehlermeldung hervorruft. Was passiert, wenn Du auf die Fehlermeldung einen Doppelklick machst.
Ok ich hab nun den Kompiler wieder auf C++ gestellt. War blöd von mir. Nun weiss ich nicht wie ich diese Meldung beheben kann: Fehler 1 error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. c:\dokumente und einstellungen\user\desktop\xgraph_demo\include\gfxutils.h 70 XGraphTest
Ich verzweifle noch. Es muss doch möglich sein, dass dieses Beispiel unter Microsoft Visual Studio C++ 2008 (Prof.) läuft. Das ist echt tricky.
Hier habe ich zwar ein Fragezeichen vergessen, aber ich zitiere mich
trotzdem mal:
> Was passiert, wenn Du auf die Fehlermeldung einen Doppelklick machst?
Welcher Code wird dann angezeigt?
Hallo Rufus, wenn ich einen Doppelclick darauf mache, erscheint die Codestelle
1 | operator= (const CRgnEx& copy) { CreateRectRgn(0,0,0,0); CopyRgn((CRgn*) (©)); }; |
. Diese Codestelle befindet sich in der Headerdatei "gfxutils.h".
Dann sind immerhin das VC und mein Editor der gleichen Ansicht, was die Zeilennummer betrifft. Der Fehler liegt hier darin, daß für operator= kein Rückgabewert definiert wurde. Das ist ... schluderig. Probier mal das hier:
1 | CRgnEx& operator= (const CRgnEx& copy) { CreateRectRgn(0,0,0,0); CopyRgn((CRgn*) (©)); }; |
Insgesamt scheint das Ding ziemlich hingeschludert zu sein, willst Du Dir das wirklich antun? Wie Du übrigens an den Kommentaren auf CodeProject (denen Du selbst relativ sinnlos einen deutschsprachigen hinzugefügt hast) entnehmen können dürftest, macht dieser Code Probleme beim Übersetzen mit neueren MS-Compilern. Und wie Du auch feststellen können solltest, hat der Autor vor 5 Jahren die Entwicklung eingestellt.
Danke! Hab nun noch zwei Fehlermeldungen: Fehler 2 fatal error CVT1100: duplicate resource. type:MANIFEST, name:1, language:0x0409 CVTRES XGraphTest Fehler 3 fatal error LNK1123: Fehler bei der Konvertierung in COFF: Datei ist ungültig oder beschädigt. XGraphTest XGraphTest
Da wirst Du Dich jetzt selber durchbeißen müssen, ich habe hier weder einen MS-Compiler noch einen Rechner mit Windows ... Resourcen vom Typ Manifest sind nicht unbedingt nötig, sieh Dir mal die Manifest-Einstellungen Deiner Entwicklungsumgebung an. Ganz merkwürdig ist allerdings die Linkerfehlermeldung mit COFF - seit wann verwendet Microsoft das?
Rufus t. Firefly schrieb: > Insgesamt scheint das Ding ziemlich hingeschludert zu sein, willst Du > Dir das wirklich antun? Teile davon wirken wirklich ziemlich hingeschludert. Chris Maunder schreibt normalerweise wesentlich besser. Da dürfte jemand drann gewesen sein, der nicht wirklich wusste was er tat. Ausserdem: Was willst du damit? Das ist eine fertige Lib. Ohne Source Code der Implementierung ist so etwas ziemlich wertlos, weil du keine für dich notwendigen Anpassungen machen kannst. Bei Codeproject hab ich mir schon lange angewöhnt, die Sourcen als Vorlage bzw. Studie zu sehen, die eine Idee vermitteln. Ganz selten, dass ich von dort etwas übernehmen konnte, an dem ich nicht Hand anlegen musste. Als Technologielieferant bzw. als Demo wie man bestimmte Dinge machen kann, ist Codeproject aber immer einen Blick wert.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.