Problem mit der dinput.dll
-
Das sag ich alles meinem linker:
--no-export-all-symbols --add-stdcall-alias
-ldinput8 -ld3dx9d -ld3d9
-ldxguid -lwinmm -lgdi32 -lole32
../../../../../Programme/Dev-Cpp/lib/dsound.lib
../../../../../Programme/Dev-Cpp/lib/dinput.libdinput8 und dinput brauch ich beide !
Und da is noch ne andere Fehlermeldung:
"Warning | ...\Warning | .drectve `%.*s' unrecognized"Auch und nebenbei: bei Dev-C++ is n DirectX Tutorial dabei, das auch DInput benutzt und es funktioniert
-
Wieso brauchst Du sowohl dinput8 als auch dinput??
-
Weil ich DInput8 für DirectInput8Create und DInput für c_dfDIKeyboard u.ä. brauch.
-
Schau Dir doch bitte mal ein Sample an:
Du inkludierst z.B.
#define STRICT #define DIRECTINPUT_VERSION 0x0800 #include <windows.h> #include <dinput.h> #include "resource.h"
Und da Du Version 8 gesetzt hast, linkst Du gegen dinput8.lib.
-
Wenn ich "#define DIRECTINPUT_VERSION 0x0800" schreib verhinder ich, dass man dinput8 linken kann ? Hab ich dich da richtig verstanden ? Ich bin nämlich nich gerade der C++Experte.
Nochmal zuück zu dem QACONTAINERFLAGS Problem: Was kann ich dageben machen ? Muss ich da n paar Compiler-Optionen ändern oder so ? ODer soll ich Dev-C++ neu installiern ?
Und diese komische Warnung, hat die vielleicht was mit der sache zu tun ?
-
Dein Problem ist einfach, dass du dinput.lib und dinput8.lib nicht gleichzeitung linken kannst. Da dinput.lib 'ne Vorgängerversion ist, kommt es zu Inkonsistenzen. Benutze einfach dinput8.lib und fertig. Die hat alles was du brauchst, auch c_dfDIKeyboard uä.
-
Ich weiß nicht wie ,aber irgendwie hab ichs geschafft !?!?!
Mit beiden Libs.
Das QACONTAINERFLAGS Problem hab ich auch irgendwie gelöst. Dumm is nur, dass es immer wieder kommt wenn ich ne neue Datei zum Projekt hinzufüge. Da muss ich jedes mal raten was ich da gemacht hab. Hat da jemand ne Erklärung ?
-
JuGL schrieb:
Ich weiß nicht wie ,aber irgendwie hab ichs geschafft !?!?!
Mit beiden Libs.
Das QACONTAINERFLAGS Problem hab ich auch irgendwie gelöst. Dumm is nur, dass es immer wieder kommt wenn ich ne neue Datei zum Projekt hinzufüge. Da muss ich jedes mal raten was ich da gemacht hab. Hat da jemand ne Erklärung ?Ohne Deinen Source wohl kaum... Aber bitte poste ihn hier nicht!!
-
JuGL schrieb:
Ich weiß nicht wie ,aber irgendwie hab ichs geschafft !?!?!
Mit beiden Libs.Ich hab das Gefühl, du willst einfach nicht hören. Mehrere User haben dir schon mehrfach erklärt, was du falsch machst. Und trotzdem machst du's immer wieder so. Wenn du nicht auf uns hören willst, dann vielleicht auf die DirectX Doku.
To create a DirectX 8.x interface with the DirectX 9.0 software development kit (SDK) without using CoCreateInstance :
Set "#define DIRECTINPUT_VERSION 0x0800" before the include statement for Dinput8.h.
Call DirectInput8Create instead of DirectInputCreateEx.
Link to the Dinput8.lib library instead of Dinput.lib.Beide Libs mitzulinken ist schlichtweg falsch.
-
Ich hab schon gemerkt, dass das eigendlich nicht gehen sollte und habs auch NUR mit der dinput8 versucht. Einzige Kuriosität is jedoch, dass bei der dinput8 vom SDK DirectInput8Create fehlt und bei der dinput8 von Dev-C++ fehlen c_dfDIKeyboard usw.
Darum hab ichs jez mit beiden gemacht und es geht !
Doof is nur dass ich dieses dumme QACONTAINERFLAGS nicht wegbekomme :(.
-
Also das Hauptproblem, was ich bei dir sehe, sind die nichtaufgelösten Symbole. QACONTAINERFLAGS ist wahrscheinlich nur ein Folgefehler. Warum diese Symbole nicht aufgelöst werden können, kann ich dir nicht sagen, da ich das bisher nur mit dem MSC und zugehörigen Libs gemacht hab. Ich wüsste aber nicht, warum das mit Dev-C++ nicht gehen sollte. Trotzdem nochmal ein paar Tips:
- auf aktuellste DirectX DevPack Version für Dev-C++ prüfen
- auf aktuellste Windows PlatformSDK Version für Dev-C++ prüfen
- Lib Include Verzeichnisse prüfen (DirectX Verzeichnis sollte an erster Stelle stehen)
- Code auf ein Minimalbeispiel reduzieren und nur benötigte Libs mitlinken
- Forum Suche und google bemühen
Sollte alles nichts helfen, gäbe es noch die Möglichkeit dinput8.dll dynamisch anstatt statisch zu linken (LoadLibrary und GetProcAddress lassen grüssen). Soweit, denke ich, muss es aber nicht kommen.