Direct Input- Nicht aufgelöstes Symbol???
-
Beim Kompilieren eines Programms, welches Direct Input Funktionalitäten nutzen soll, bekomme ich irgendwelche Linker Errors:
Code wird generiert...
Verknüpfen...
steuerung.obj : error LNK2019: Nicht aufgelöstes externes Symbol '_DirectInput8Create@20', verwiesen in Funktion '"public: long __thiscall CSteuerung::InitDirectInput(struct HINSTANCE__ *,struct HWND__ *)" (?InitDirectInput@CSteuerung@@QAEJPAUHINSTANCE__@@PAUHWND__@@@Z)'
steuerung.obj : error LNK2001: Nichtaufgelöstes externes Symbol _IID_IDirectInput8A
steuerung.obj : error LNK2001: Nichtaufgelöstes externes Symbol _c_dfDIKeyboard
steuerung.obj : error LNK2001: Nichtaufgelöstes externes Symbol _GUID_SysKeyboard
testframe.obj : error LNK2019: Nicht aufgelöstes externes Symbol '"public: __thiscall CSteuerung::CSteuerung(void)" (??0CSteuerung@@QAE@XZ)', verwiesen in Funktion '_WinMain@16'
testframe.obj : error LNK2019: Nicht aufgelöstes externes Symbol '__imp__InitCommonControls@0', verwiesen in Funktion '_WinMain@16'
Debug/steuerungv002.exe : fatal error LNK1120: 6 unaufgelöste externe VerweiseEs scheint sich da um Direct Input interne Geschichten zu handlen und habe ehrlich gesagt nicht den blassesten Schimmer, woher sowas kommt. In der MSDN stand irgendwas von CLR etc- dabei schreibe ich unmanaged Code- irgendwelche Hinweise?
-
Du musst natürlich die Lib dinput8.lib ins aktuelle Projekt eingebunden haben
-
das habe ich getan...
-
Schau dir mal die DirectInput Samples an bzw lass sie mal kompilieren dann siehst du dass es gehen müsste
-
die Direct Input Samples lassen sich auch 1a kompilieren. Nur weiss ich dann trotzdem nicht, woher die o.g. Fehler kommen, wodurch sie verursacht werden. Ich bräuchte mal einen Hinweis, damit ich das Problem weiter eingrenzen kann.
Die Fehler stammen aus einem eigenen Programm, welches DI nutzen soll. Die Fehler bezeihen sich eindeutig auf Teile von DI, nur was verursacht sie?
-
Da du die Libs ja alle eingebunden hast, hilft nur Platte formatieren und alles neu Installieren. Oder du defninierst einfach mal die nicht aufgelösten Symbole. (dxguid und so)
Bye, TGGC (Ein Jahr Helden)
-
Danke, verarschen kann ich mich auch alleine.
-
Eingebunden sind folgende Header:
windows.h
commctrl.h
dinput.h- sollte eigentlich ausreichen, oder? Verwendet wird DirectX9.
-
TGGC schrieb:
Oder du defninierst einfach mal die nicht aufgelösten Symbole. (dxguid ...
Physikalischer Fehler schrieb:
Danke, verarschen kann ich mich auch alleine.
Formulieren wir TGGC's Frage mal etwas konkreter: Hast Du dxguid.lib gelinkt?
Ciao,
Stefan
-
Physikalischer Fehler schrieb:
Eingebunden sind folgende Header:
windows.h
commctrl.h
dinput.h- sollte eigentlich ausreichen, oder? Verwendet wird DirectX9.
Du hast Linker Fehler, erste Anlaufstelle für die Fehlersuche sind deshalb die verwendeten Libs. dinput8.lib und dxguid.lib sind hier notwendig. Zudem fehlt dir InitCommonControls(), da sollte comctl32.lib helfen.
-
RTFM, STFW und Autocogito.
Bye, TGGC (Ein Jahr Helden)
-
MSDN schrieb:
MSDN
Linking with GUIDsDirect3D uses globally unique identifiers (GUIDs) to identify parts of the interface. When you use the IUnknown::QueryInterface method to determine whether an object supports an interface, you identify the interface you're interested in by using its GUID.
To use GUIDs in a DirectX 9.0 application, include a link to the Dxguid.lib library and remove "#define INITGUID" from all your header files and source files. This is a change from previous versions, where GUIDs were linked by defining INITGUID prior to all other include and define statements. In the older versions, INITGUID needed to be defined in only one of your source modules.
Note that you use GUIDs differently depending on whether your application is written in C or C++. In C, you pass a pointer to the GUID (, for example), but in C++, you pass a reference to it (IID_IDirect3D).