Probleme den Header zu finden. mit vc++ 2005
-
Hallo,
ich bin gerade dabei mich in c++ vc++ 2005 und directx einzuarbeiten.
ich hab ein kleines Tutorial umgebaut um zu gucken was passiert.
Allerdings findet vc++ 2005 meine header Datei nicht:initwindow.cpp(4) : fatal error C1083: Datei (Include) kann nicht geöffnet werden: "InitD3D.h": No such file or directory
In der Projektmappe befinden sich die header Dateien in einem seperaten Ordner, innerhalb des Explorers gibt es diese Ordnerstruktur nicht und die cpp + h dateien liegen im gleichen Verzeichnis.
So sieht der nicht gefundene Header aus:
#ifndef _InitD3D_h_ #define _InitD3D_h_ // ... Definitionen von InitD3D.h ... HRESULT InitD3D(HWND hWnd, LPDIRECT3DDEVICE9 g_pd3dDevice); #endifin der Anfangsklasse eingefügt:
#include <InitD3D.h>
kann mir jemand sagen warum der header nicht gefunden wird?
was ist der unterschied zwischen include "header.h" und include <header.h>?
???
viele grüße
-
bei <> sucht er nur in den verzeichnissen welche in den projekteinstellungen angegeben wurde, bei "" durchsucht er diese und zusaetzlich die programmpfade
fuer eigene header im pfad ist stets "" zu verwenden
-
Die Schreibweise mit spitzen Klammern ist für Systemheader reserviert, für "normale" Header brauchst du die Varainte in Anführungszeichen (#include "InitD3D.h").
(der Unterschied ist ganz einfach, daß bei der "..." Variante als erstes im aktuellen Verzeichnis nach der Datei gesucht wird, bei der <...> Variante nicht)
-
Vielen Dank für die Hilfe,
dann muss ich also " " benutzen.Wenn ich das allerdings benutze, bekomme ich folge Fehler:
- error C2440: 'Initialisierung': 'const wchar_t [13]' kann nicht in 'LPCSTR' konvertiert werden -
und zwar bezieht sich der Fehler auf den Parameter L"D3D Tutorial" in dem Aufruf:
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, L"D3D Tutorial", NULL };Woran kann das liegen?
Hab ausserdem <strsafe.h> includedIch hab das Gefühl es wird auf meine eigenen Header garnicht zugegriffen.
wenn ich die MethodeLRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
nachdem ich sie aufrufe definiere, obwohl ich sie im header definiert habe, sagt der compiler: "is nich". (Bei java ists ja doch möglich).
-
knitte schrieb:
Vielen Dank für die Hilfe,
dann muss ich also " " benutzen.Wenn ich das allerdings benutze, bekomme ich folge Fehler:
- error C2440: 'Initialisierung': 'const wchar_t [13]' kann nicht in 'LPCSTR' konvertiert werden -
und zwar bezieht sich der Fehler auf den Parameter L"D3D Tutorial" in dem Aufruf:
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, L"D3D Tutorial", NULL };Woran kann das liegen?
Ich vermute mal, daß du keinen UNICODE-Build angelegt hast (da wird dort ein normaler char-String erwartet) - ersetz mal den problematischen Teil durch
_T("D3D Tutorial").Ich hab das Gefühl es wird auf meine eigenen Header garnicht zugegriffen.
wenn ich die MethodeLRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
nachdem ich sie aufrufe definiere, obwohl ich sie im header definiert habe, sagt der compiler: "is nich". (Bei java ists ja doch möglich).
Was meinst du damit? BEi C(++) mußt du eine Funktion zumindest deklariert haben, bevor sie verwendet werden kann, d.h. entweder du packst die Definition weiter nach vorne oder du verwendest einen Prototypen (anstelle des Funktionsrumpfes ein Semikolon).
-
Ich dachte ich könnte den Prototypen innerhalb des headers angeben und die definition irgendwo innheralb der cpp datei.
Ich probier es mal aus "_T"...
-
Ja, kannst du - aber du mußt den Header auch in den CPP's einbinden, wo die Funktion verwendet (und/oder definiert) wird.
-
Auch den Header der eigenen cpp datei?
mycpp.cpp
mycpp.hals beispiel?
btw ich hab immer noch fehler... aber jetzt hab ich kein bock mehr und fahr zu aldi pommes kaufen!
-
Ja, gerade den - schließlich soll der Compiler ja DEINE Funktionen wiederfinden.