Fragwürdige Compilefehler



  • Hallo Leute,
    Ich habe heute versucht ein D3D Fenster zu zeichnen. Habe vorerst versucht den Code aus meinem Buch erfolgreich zu Compilieren.
    Gab einige kleine Probleme (MessageBox(W) zu MessageBoxA und "L" vor Strings gestellt) , aber funktionieren will es immer noch nicht.
    (Es gab die gleichen Probleme beim Erstellen eines normalen Fensters,aber mit MessageBoxA und dem "L" vor Strings konnte ich erfolgreich compilieren)

    Und das sind jetzt die beiden Fehler:

    error LNK2001: Nicht aufgelöstes externes Symbol "_Direct3DCreate9@4".

    fatal error LNK1120: 1 nicht aufgelöste externe Verweise.

    Gegoogelt habe ich und habe öfters gelesen, dass etwas mit dem Linker nicht stimmt. (Wie die Namen der Fehler schon sagen)
    Ich nutze Visual Studio und dort ist soweit alles gelinkt (außer das DirectX SDK).

    Für das DirectX SDK habe ich nur die Includes und die LIB eingebunden.
    Müsste so sein oder ?

    Freue mich auf Rückmeldungen,
    dD



  • Du mußt auch die DX9-Libraries noch mit reinlinken. Dazu mußt Du dem Linker als weitere Bibliotheken noch d3d9.lib mit angeben.



  • ich habe unter Bibliotheksdateien : Microsoft DirectX SDK (April 2006)\Lib eingelinkt.
    Was meinst du mit d3d9.lib ?



  • Mit dem was Du gemacht hast hast Du Visual Studio nur mitgeteilt, wo es ggf. Bibliotheken finden kann. Aber noch nicht welche es einbinden muß. Du mußt dem Linker auch noch sagen welche er mit reinlinken soll.



  • achso,
    du meinst die includes ?

    #include <windows.h>
    #include <d3d9.h>
    #include <d3dx9.h>

    Die habe ich eingebunden.



  • Spreche ich chinesisch? d3d9.lib lib lib lib... nicht .h und auch nicht irgendein Pfad, sondern den Namen der library mußt Du dem Linker mitteilen. Das geht in den Linkereinstellungen, da mußte die (ich glaub ich wiederhole mich) d3d9.lib mit angeben.



  • Rechtsklick auf das Projekt -> Eigenschaften -> Linker -> Eingabe -> Zusätzliche Abhängigkeiten : d3d9.lib.

    Nachdem ich das gemacht habe klappt alles wunderbar.
    Danke dir.



  • ähm, nich aufregen jester... 🙂 du sprichst kein chinesisch, aber das fensterchen ist imho ziemlich gut versteckt kann man leicht übersehen, wenn man nicht weis, dass da eins da ist 🙄 (was ja bei anfängern [~wie mir^^] meistens der fall ist) 😃

    @OP
    also, wenn du VS hast dann klickste auf:
    "Projekt" "Einstellungen" "Linker"
    da ist so eine zeile, wo 100000000 libs angegeben sind, da fügst du einfach zusätzlich ein:

    D3D9.lib D3DX9D.lib DXErr9.lib D3DX9.lib
    

    damit solltest du eigentlich alles haben, was du so brauchst, um erstma ein paar kleine programmchen für D3D9 zu schreiben (ohne sound steuerung und sowas)

    und nicht vergessen: Direct3D in debug-modus versetzen, dann meckert er auch was sinnvolles, falls was schiefläuft!! (Systemsteuerung->Zusätzliche Einstellungen->DirectX->Direct3D)

    gl hf 👍

    edit: hoppla, da war der OP doch schneller, habs jetzt um die uhrzeit nich erwartet 😃 , respekt! 👍



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Mh, jetzt wo ich einen Text in das D3D Fenster einfügen möchte, bekomme ich diesen Fehler:

    error C2664: 'strcpy': Konvertierung des Parameters 1 von 'WCHAR [32]' in 'char *' nicht möglich

    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

    Die Zeile ist folgende:

    strcpy(FontDesc.FaceName, "Arial");

    Das hat jetzt aber nichts mit dem Linker zu tun, soweit ich weiss.



  • Nein, das hat etwas mit deinen Unicode-Einstellungen zu tun. Das heißt, du solltest die UNICODE-Version von strcpy() verwenden (wie die heißt, sollte in der MSDN stehen).



  • http://msdn.microsoft.com/library/deu/default.asp?url=/library/DEU/vccore/html/_core_strings3a_cstring_operations_relating_to_c2dstyle_strings.asp

    Das sollte es sein ,nehme ich an:

    ... verwenden Sie strcpy (oder das Unicode/MBCS-portable _tcscpy) ...

    Ich habe das _tcscpy versucht und der Compiler sagt:

    error C3861: "_tcscpy": Bezeichner wurde nicht gefunden.

    Muss ich vielleicht was inkludieren ?



  • #include <tchar.h>

    PS: Man könnte ja auch mal die Doku lesen...



  • Ok,danke, habe es inkludiert,aber nun folgendes:

    error C2664: 'wcscpy': Konvertierung des Parameters 2 von 'const char [6]' in 'const wchar_t *' nicht möglich

    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.

    Die Zeile,wie zuvor:

    _tcscpy(FontDesc.FaceName, "Arial");



  • Wenn tchar, dann richtig tchar:

    _tcscpy(FontDesc.FaceName, _T("Arial"));
    


  • Danke vielmals.
    Werde in diesem Thread weiterposten,wenn es Probleme gibt.


Anmelden zum Antworten