Seite 1 von 1
[Visual Studio] Include-Problem
Verfasst: 29.06.2011, 12:24
von Brainsmith
Hallo,
ich habe seti kurzem ein Problem und leider keine Ahnung woher das rührt:
ich will X3DAudio.h aus dem DX-SDK includieren. Im Header geht das nicht, aber in der cpp-Datei schon. Nun ergibt sich mir die Idee, dass ich irgendwas falsch verlinkt haben muss.. Aber was?
Die Fehlermeldung beim linken in der Header-Datei lautet:
fatal error C1083: Datei (Include) kann nicht geöffnet werden: "X3DAudio.h": No such file or directory
Wenn ich in der cpp-Datei linke, passiert das nicht. Kann mir das evtl jmd erklären? Stehe da ziemlich aufm Schlauch
Re: [Visual Studio] Include-Problem
Verfasst: 29.06.2011, 12:50
von Krishty
Header werden nicht kompiliert – sie werden von einer anderen Definitionsdatei eingebunden und dann in dieser kompiliert. Ergo ist das Problem eher, dass das Einbinden von der einen Definitionsdatei aus funktioniert, aber von der anderen aus nicht.
Das kann passieren, wenn die einbindende Datei nicht Teil deines Projekts ist, oder Teil deines Projekts ist und just umbenannt wurde und darum die Projekteinstellungen nicht mehr für sie gültig sind, oder sie zu einem anderen Projekt derselben Lösung gehört o.Ä. … mal ganz banal versucht, alles zu speichern und Visual Studio neu zu starten?
Gruß, Ky
Re: [Visual Studio] Include-Problem
Verfasst: 29.06.2011, 13:20
von Brainsmith
Ich bekomme eine ganze Menge an Fehlern ausgegeben. Ein Neustart hat mir bisher auch nicht geholfen.
Zur Lösung: Ich habe eine Solution, die zwei Projekte beinhaltet. Einmal meine Soundengine und eine 3D-Testumgebung, die eigentlich nur eine dirty main-Methode ist. Die Soundengine wird automatisch in die main gelinkt. Dann muss der Fehler ja irgendwie dort herrühren. Allerdings bin ich ratlos, wie ich das beheben soll..
Hier mal die Fehlerliste. Wirres Zeug, von dem ich nicht genau weiß, was ich davon halten soll.
Re: [Visual Studio] Include-Problem
Verfasst: 29.06.2011, 13:24
von joggel
Irgendwie kommen die Fehlermeldung mir bekannt vor .... :? .
Bindest Du irgendwo die "windows.h" oder so etwas ein?
"windef.h"??? Irgendsowas?
Re: [Visual Studio] Include-Problem
Verfasst: 29.06.2011, 13:30
von Brainsmith
in der stdafx.h binde ich folgende Dateien manuell ein:
Code: Alles auswählen
#include <stdlib.h>
#include <crtdbg.h>
#include <assert.h>
stdafx bindet ja selber noch (gefühlte) zig Millionen Header ein. Die kann ich allerdings nicht nachprüfen.
in meiner Soundengine binde ich im Header nur folgendes ein:
Code: Alles auswählen
#include "stdafx.h" // (ich weiß, dass es da eigentlich nicht hingehört. muss ich bei Zeiten mal ändern)
#include <string>
In der cpp binde ich dann die hier ein:
Code: Alles auswählen
#include "stdafx.h"
#pragma hdrstop
#include "SpartanSound.h"
#include <XAudio2.h>
#include "SoundSource.h"
die main im zweiten Projekt bindet ne ganze Menge ein:
Code: Alles auswählen
#include <windows.h>
#include <windowsx.h>
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#include <vector>
#include <string>
#include <time.h>
#include <sstream>
#include <math.h>
Re: [Visual Studio] Include-Problem
Verfasst: 29.06.2011, 13:38
von joggel
Mal ein Schuss ins Blaue:
Binde mal vor dem 1sten (also, nach dem #pragma..) include in deiner SoundEngine CPP die "windows.h" ein....
[Edit]
Ähnliches Problem, fand ich gerade:
http://social.msdn.microsoft.com/Forums ... 82b2aaaba/
Re: [Visual Studio] Include-Problem
Verfasst: 29.06.2011, 14:03
von Brainsmith
Das ist ja schonmal irre... Alle Fehler bis auf die Tatsache, dass er die Datei nicht findet, sind nun weg. Vielen Dank
Leider ist mein Problem noch nicht gelöst.
Ich habe in den Projekteinstellungen ordnungsgemäß alle Includeverzeichnisse gelinkt. Sonst würden die Dateien ja in den cpp-Files nicht gefunden werden.
Wenn ich im Header den Pfad hardcode, funktioniert das.. Das irritiert mich. Ich arbeite häufig an verschiedenen Rechnern an der Soundengine. Daher wäre es schlecht, wenn ich jedesmal den Pfad ändern müsste.
bisher hab ich den Include-Pfad folgendermaßen angegeben: $(DXSDK_DIR)Include
Ein Neustart von Visual Studio hilft da leider nicht und auch ein kompletter rebuild bringt mir nix.
Falls jemand ne Idee hat, bin ich für alle Vorschläge offen.
Und danke an euch beide für die Hilfe bisher
Re: [Visual Studio] Include-Problem
Verfasst: 29.06.2011, 14:07
von joggel
Brainsmith hat geschrieben:Das ist ja schonmal irre... Alle Fehler bis auf die Tatsache, dass er die Datei nicht findet, sind nun weg. Vielen Dank
...
Wenn ich im Header den Pfad hardcode, funktioniert das..
Heißt das, dass es nun geht, wenn du den Pfad im Header selber angibst "hardcode".
Oder das nun keine Fehlermeldung mehr kommen, aber dafür *nur* die Meldung "Bla-Bla.h" nicht gefunden? :)
Re: [Visual Studio] Include-Problem
Verfasst: 29.06.2011, 14:11
von Brainsmith
Wenn ich den Pfad manuell im Header angebe, funktioniert alles.
Natürlich will ich den nicht manuell angeben, weil ich ja verschiedene Rechner benutze, um daran zu programmieren. Da ist das DX-SDK auf anderen Festplatten installiert.
Edit:
Ich hab das Problem gelöst. Zwar waren in der Soundengine die Includepfade des DX-SDK gelinkt, aber nicht im main-Projekt.
Da musste ich die Verzeichnisse noch hinzufügen. Danach gings.
Ich frage mich allerdings, warum das gelinkt werden muss. Ich erzeuge eine Lib und X3DAudio linke ich auch als Lib... Ergo müsste die in meiner Lib enthalten sein und nicht extra gelinkt werden... bin verwirrt..
Re: [Visual Studio] Include-Problem
Verfasst: 29.06.2011, 15:02
von BeRsErKeR
Was haben Includepfade denn mit Linken zu tun? Wenn du die Funktionalität einer Lib nutzen willst brauchst du dennoch die Headerfiles um bestimmte Datenstrukturen usw nutzen zu können. Wenn du also in deinem main-Projekt explizit was aus anderen Libs brauchst, dann musst du da natürlich auch die entsprechenden Header includen und die Include-Pfade bekannt machen (wobei sowas auch in den globalen VS Optionen für alle Projekte geht). In der Lib sind doch nur die kompilierten Sachen drin. Zum Programmieren benötigst du dennoch die Deklarationen von Klassen usw.
Und da dein Problem augenscheinlich nach Compiler/Präprozessor und nicht nach Linker klingt, hat das alles nicht viel mit Linken zu tun.
Re: [Visual Studio] Include-Problem
Verfasst: 30.06.2011, 08:30
von Brainsmith
Ich Volldepp.... Ich habe die Datei im Header eingebunden, den die Main einbindet und es geschafft, das nicht zu bemerken.. Natürlich hast du recht, Herr Zealot.