Fehlermeldung beim Kompilieren
-
Versuche nach dem Buch Visual C++.NET in 21 Tagen das erste Kapitel nachzuvollziehen, leider scheitere ich an scheinbaren Kleinigkeiten:
Verwende Viual C++ 2008 und habe folgenden Code in einer MFC Anwendung:void CHelloDlg::OnBnClickedHello() { MessageBox("Hallo. Dies ist meine erste Visual C++ Anwendung!", "Meine erste Anwendung"); }beim kompilieren kommt die Fehlermeldung!
error C2664: 'CWnd::MessageBoxW': Konvertierung des Parameters 1 von 'const char [50]' in 'LPCTSTR' nicht möglich
Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
leider kann ich trotz vergeblicher Versuche, den Fehler nicht finden!
Bitte um Hilfe ...
danke h.
-
" -> L"
-
bitte sehr, meinst Du ich bin jetzt klüger geworden? Dein Beitrag sollte verständlicher formuliert werden, dann hat dieses Forum seinen Sinn, aber so verfehlt es die Wirkung und mir und Dir ist nicht gedient ...
-
Du hast bei den Projekteinstellungen Unicode verwenden gesetzt. Das ist auch default Einstellung.
Du siehst das an der Fehlermeldung. Der Compiler will nicht MessageBox aufrufen sondern MessageBoxW. W steht wohl für wide char oder so. A als Endung gibt es auch für ASCII (MessageBoxA).Der Compiler interpretiert die Strings immer als ASCII. setzt du ein L davor sagst du ihm wide char.
char* t = "Hallo Welt"; // ASCII wchar_t* t = L"Hallo Welt"; // wide char (wenn du es einem char* zuweist gibts ne Fehlermeldung)Arbeitest du mit MFC kannst du _T("Hallo Welt") nehmen.
Das ist nix weiter als ein Makro das sich je nach Einstellung Unicode bzw Ascii zu L"Hallo Welt" oder "Hallo Welt" auflöst (mach einfach mal ein gehe zu Definition in Studio).
-
ihoernchen schrieb:
Arbeitest du mit MFC kannst du _T("Hallo Welt") nehmen.
Das ist nix weiter als ein Makro das sich je nach Einstellung Unicode bzw Ascii zu L"Hallo Welt" oder "Hallo Welt" auflöst (mach einfach mal ein gehe zu Definition in Studio).Die TCHAR Notation hat nichs mit MFC zu tun. Die gesamte WinAPI und die CRT arbeitet normalerweise damit.
-
danke, erledigt
-
ihoernchen schrieb:
Du hast bei den Projekteinstellungen Unicode verwenden gesetzt. Das ist auch default Einstellung.
Du siehst das an der Fehlermeldung. Der Compiler will nicht MessageBox aufrufen sondern MessageBoxW. W steht wohl für wide char oder so. A als Endung gibt es auch für ASCII (MessageBoxA).Der Compiler interpretiert die Strings immer als ASCII. setzt du ein L davor sagst du ihm wide char.
char* t = "Hallo Welt"; // ASCII wchar_t* t = L"Hallo Welt"; // wide char (wenn du es einem char* zuweist gibts ne Fehlermeldung)Arbeitest du mit MFC kannst du _T("Hallo Welt") nehmen.
Das ist nix weiter als ein Makro das sich je nach Einstellung Unicode bzw Ascii zu L"Hallo Welt" oder "Hallo Welt" auflöst (mach einfach mal ein gehe zu Definition in Studio).ich kann unter Optionen die Definition in Studio nicht finden, bitte um Hilfe, danke
-
oldi schrieb:
bitte sehr, meinst Du ich bin jetzt klüger geworden? Dein Beitrag sollte verständlicher formuliert werden, dann hat dieses Forum seinen Sinn, aber so verfehlt es die Wirkung und mir und Dir ist nicht gedient ...
Oh mein Gott du bist so schlecht das gibts garnicht.
Wenn du mit so einem trivialen Problem nicht alleine fertig wirst, dann schmeiss es gleich ganz hin.
Ein Minimum an Selbständigkeit sollte man IMO voraussetzen können.
-
Anmeldungsdatum: 20.04.2002
Was hast du in den 7 jahren gemacht? O.O
-
wutwut schrieb:
Anmeldungsdatum: 20.04.2002
Was hast du in den 7 jahren gemacht? O.O
na eben nicht nur das, jedenfalls sind eure Kommentare besonders hilfreich und zuviel der Agression, kein danke
-
oldi schrieb:
wutwut schrieb:
Anmeldungsdatum: 20.04.2002
Was hast du in den 7 jahren gemacht? O.O
na eben nicht nur das, jedenfalls sind eure Kommentare besonders hilfreich und zuviel der Agression, kein danke
Man darf doch fragen. Bei mir isses auf englisch, aber is ganz leicht:
1.) Rechtsklick auf dein Projekt
2.) Properties drücken
3.) "General" auswählen
4.) Unter "General" wird es dann 'ne untere Sektion geben die sich "Project Defaults" nennt, unten steht dann "Character Set" da änderste die einstellung von "use unicode character set" auf "use multi-byte character set"
-
jetzt kommt ein danke
- Multi-Byte-Zeichensatz verwenden: das war es!
- beim Erstellen der Anwendung hatte ich die Markierung bei Unicode .... nicht entfernt, das war der erste Flüchtigkeitsfehler.
-
oldi schrieb:
jetzt kommt ein danke
- Multi-Byte-Zeichensatz verwenden: das war es!
- beim Erstellen der Anwendung hatte ich die Markierung bei Unicode .... nicht entfernt, das war der erste Flüchtigkeitsfehler.
Man bist Du blö.....
Willst Du nicht lieber zu Basic zurück gehen, hast Du doch auch fürher gemacht.
Kennst Du mich noch?
Schönen Gruß aus Flensburg, ich wohne da jetzt schon sehr lange....Zicke, Zicke, Zacke... na dämmerts????