c++ WinAPI und lauter Fehler
-
Projekt Optionen (Alt+P).
-
Tut mir leid, aber bitte NOCH genauer. Ich kann diese Option nicht ausführen, da ich kein Projekt, sondern einzelne Dateien habe...
Außerdem kann ich beim besten Willen keine gdi32.lib finden. Und selbst wenn, wüsste ich nicht wohin damit und wie weiter...
-
Hmm, dann wirste wohl nen Projekt raus machen müssen?
Ich benutze und kenne die IDE nicht, aber hier z.B. wurde auch die gdi32 dabeigepackt:
http://wiki.codeblocks.org/images/7/75/Compile_sdl_include_libraries.pngBei mingw liegt die gdi32.lib meine ich auch dabei, hat da aber glaube ich nicht die Endung .lib...
-
bei mir kommt immer ein Fehler, sobald ich die Optionen aufrufen will. Den Fehler hier zu posten wäre wohl sinnlos, da wahrscheinlich keiner was mit den Zahlen anfangen könnte...Könnte es an der Version liegen. Is scheinbar ja nur ne Beta-Version von dev. Ich habs auch schon neu installiert->bringt leider auch nichts.
-
geeky hat recht, ohne Projekt geht da (soweit ich weiß) nix.
Schreib aber mal den Fehler.
-
Such dir lieber ne andere IDE aus (zB eben CodeBlocks oder das Visual Studio als Express Edition), devc++ is nicht so gut und etwas Buggy.
-
Es gibt auch noch "Visual MinGW" und "MinGW Studio" als IDE, mindestens eines auch für Linux.
Hab aber keine Ahnung wie gut die sind .
-
Visual Studio Express Edition is kostenlos, oder?
-
Ja
und - als Microsoft Abtrüniger sag ich das zwar ungern - eigentlich ziemlich gut.
-
Dark_DanI schrieb:
Visual Studio Express Edition is kostenlos, oder?
ja, siehe:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-143003.html(PS: Du solltest Dir das ISO runterladen um eine Registrierung zu ersparen)
-
Danke, ich hab nun die iso nur weiß ich nicht, we man compilt. Bei devc++ ging ja alles automatisch nur bei VC? Muss man das da manuell irgendwie machen, wenn ja, wie?
-
Win32-Projekt beginnen, Quellcode basteln, "F5"
-
Du musst
1. das VC2005 EE installieren
2. das PSDK runterladen (am besten auch das ISO) und installieren
3. das PSDK einbinden
4. Nun kanns losgehen (Datei|Neu...|Projekt|Win32...)Siehe auch:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-143003.html
-
Jochen Kalmbach schrieb:
3. das PSDK einbinden
Sofern man das PSDK im richtigen Ordner installiert (...\Microsoft Visual Studio 8\VC\PlatformSDK\), fällt dieser Punkt sogar weg.
-
Schent funktioniert zu haben...Es kmmen nun neue Fehler, aber d scheinen wohl mehr Compiler bedingt. So gut wie kener meneralten codesfunzt noch...Ist VC genauer? Zum Beispiel hat er gemeckert, als ich:
long double a = 10;
long double E = a * sqrt(5);
machen wollte...long double a = 10;
long double E = a * sqrt(5.0);
muss es hier ja heißen...Bei dev war sowas noch egal.
Und bei der WINAPI wo ich ja sowieso schon kaum Ahnung von habe, zeigt er mir nun Fehler, von denen ich kaum weiß wie zu beheben, aber das wird sicher schon. Ich melode mich wieder, wenns Probleme gibt.Danke an alle, die mir bis hierhin und im folgenden geholfen haben/helfen werden.
-
Dark_DanI schrieb:
Es kmmen nun neue Fehler, aber d scheinen wohl mehr Compiler bedingt. So gut wie kener meneralten codesfunzt noch...Ist VC genauer?
Ja, der Compiler der neueren Visual C++ Versionen ist erheblich standardkonformer. Zu deinem Problem mit sqrt, der Standard definiert diverse Überladungen der Funktion. Die relevanten hier sind:
float sqrt(float); double sqrt(double); long double sqrt(long double);
Du übergibst allerdings als Argument
5
also ein Literal vom Typ int. Dafür gibt es aber keine Überladung. Also weiss der Compiler jetzt nicht, welche Funktion er aufrufen soll. Beim Argument
5.0
sieht die Sache jedoch anders aus. Hier handelt es sich um ein double Literal. Und dafür gibt es eine Überladung.
-
danke, stand auch bei den Fehlermeldungen dabei...
Also mit der WinAPI kommich nicht mehr weiter. Ich hab jetzt ne Ewigkeitlang mit Konvertierungen gekämpft und....
#include <windows.h> #define STRICT1 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE PrevInstance, PSTR szCmdLine, int CmdShow) { LPCWSTR Test1 = "Hallo"; int Ausgabe = MessageBox(NULL, Test1, "Hi", MB_OKCANCEL | MB_ICONEXCLAMATION | MB_DEFBUTTON1); return 0; }
Fehler:
1.
'Initialisierung': 'const char [6]' kann nicht in 'LPCWSTR' konvertiert werden
1> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.'MessageBoxW': Konvertierung des Parameters 3 von 'const char [3]' in 'LPCWSTR' 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.Ich checks nicht->bei dev hat der code wortwörtlich noch ohne Probs funktioniert.
-
Ab VS2005 ist per default alles UNICODE (was auch gut so ist)...
Somit muss Dein Code so aussehen:#include <windows.h> #include <tchar.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE PrevInstance, PSTR szCmdLine, int CmdShow) { LPCTSTR Test1 = _T("Hallo"); int Ausgabe = MessageBox(NULL, Test1, _T("Hi"), MB_OKCANCEL | MB_ICONEXCLAMATION | MB_DEFBUTTON1); return 0; }
-
annst du den code vielleicht noch ein wenig erläutern? Wieso tchar inkludieren zB?
Und den Syntax hiervon:
LPCTSTR Test1 = _T("Hallo");
Was soll das _T(" ") bedeuten`?EDIT:
Ach und es entsteht nach dem compilen keine .exe...
-
In der tchar.h ist Unicode-Krempel definiert.
_T("HALLO") sagt das HALLO Unicode-Zeichen sein sollen.
(Unicode wird von Windows ab Win2K intern verwendet)(Alternativ kannst du Unicode vermutlich auch ausschalten)
Ne .exe entsteht bei Compile-Fehlern selten