Forum: PC-Programmierung XGraph von Codeproject.com lässt sich nicht übersetzen


von Ingo (Gast)


Angehängte Dateien:

Lesenswert?

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

von Ingo (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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*) (&copy)); };

Ich glaube nicht, daß die diese Fehlermeldung hervorruft.

Was passiert, wenn Du auf die Fehlermeldung einen Doppelklick machst.

von Ingo (Gast)


Lesenswert?

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

von Ingo (Gast)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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?

von Ingo (Gast)


Lesenswert?

Hallo Rufus,

wenn ich einen Doppelclick darauf mache, erscheint die Codestelle
1
operator= (const CRgnEx& copy) { CreateRectRgn(0,0,0,0); CopyRgn((CRgn*) (&copy)); };
. Diese Codestelle befindet sich in der Headerdatei "gfxutils.h".

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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*) (&copy)); };

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.

von Ingo (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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?

von Karl H. (kbuchegg)


Lesenswert?

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
Noch kein Account? Hier anmelden.