Fehler im BSp

Schnelle objektorientierte, kompilierende Programmiersprache.
Empire
Beiträge: 272
Registriert: Mo Jan 26, 2009 5:36 pm

Fehler im BSp

Beitrag von Empire » Mi Mär 17, 2010 7:18 pm

Tach ich hab gerade aus einem Buch ein Bsp abgeschrieben und hab jetzte ein Problem.
Das ist der Code

Code: Alles auswählen

#include <windows.h>
#include <StdIO.h>
#include <D3D9.h>

HWND hWnd;

int WINAPI WinMain(HINSTANCE hInstnance, HINSTANCE HPrevInstance, char* pcCmdLine, int iShowCmd)
{
    PDIRECT3D9 pD3D = Direct3DCreate9(D3D_SDK_VERSION);
    if(!pD3D)
    {
        MessageBox(hWnd,"Fehler 1", "Fehler", MB_OK | MB_ICONINFORMATION);
        return 1;
    }
    int iNumAdapters = pD3D->GetAdapterCount();
    D3DADAPTER_IDENTIFIER* pAdapters = new D3DADAPTER_IDENTIFIER9[iNumAdapters];
    
    for(int iAdapter = 0; iAdapter < iNumAdapter; iAdapter++)
    {
        if(FAILED(pD3D->GetAdapterIdentifier(iAdapter, 0, &Adadapters[iAdapter])))
        {
            MessageBox(hWnd,"Fehler 2", "Fehler", MB_OK | MB_ICONINFORMATION);
            pD3D->Release();
            delete[] pAdapters;
            return 1;
        }
        char acAdapterInfo[1024];
        sprintf(acAdapterInfo, "Adapter-ID: %d\nName: %s\nTreiber: %s\n TVersion: %d", iAdapter, pAdapters[iAdapter].Description ,pAdapters[iAdapter].Driver ,pAdapters[iAdapter].DriverVersion);
        MessageBox(hWnd,acAdapterInfo, "AInfo", MB_OK | MB_ICONINFORMATION);
    }
    pD3D->Release();
    delete[] pAdapters;
    
    return 0;
}
Und zwar wird D3DADAPTER_IDENTIFIER* nicht als Zeiger Typ anerkannt.
Kann mir jemand helfen?

mfg
Empire

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Fehler im BSp

Beitrag von Xin » Mi Mär 17, 2010 7:24 pm

So leider nicht... Was meldet der Compiler und wo sind die bemängelten Zeilen?


Ich vermute hier:

Code: Alles auswählen

D3DADAPTER_IDENTIFIER* pAdapters = new D3DADAPTER_IDENTIFIER9[iNumAdapters]
Hier kommt ein D3DADAPTER_IDENTIFIER9* zurück.´, kein D3DADAPTER_IDENTIFIER*...
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Empire
Beiträge: 272
Registriert: Mo Jan 26, 2009 5:36 pm

Re: Fehler im BSp

Beitrag von Empire » Mi Mär 17, 2010 8:52 pm

Ok das war der Fehler
aber ich hab ein neuse Problem
jetzt sieht der Code so aus

Code: Alles auswählen

#include <windows.h>
#include <StdIO.h>
#include <D3D9.h>

HWND hWnd;

int WINAPI WinMain(HINSTANCE hInstnance, HINSTANCE HPrevInstance, char* pcCmdLine, int iShowCmd)
{
    PDIRECT3D9 pD3D = Direct3DCreate9(D3D_SDK_VERSION);
    if(!pD3D)
    {
        MessageBox(hWnd,"Fehler 1", "Fehler", MB_OK | MB_ICONINFORMATION);
        return 1;
    }
    int iNumAdapters = pD3D->GetAdapterCount();
    D3DADAPTER_IDENTIFIER9* pAdapters = new D3DADAPTER_IDENTIFIER9[iNumAdapters];
    
    for(int iAdapter = 0; iAdapter < iNumAdapters; iAdapter++)
    {
        if(FAILED(pD3D->GetAdapterIdentifier(iAdapter, 0, &pAdapters[iAdapter])))
        {
            MessageBox(hWnd,"Fehler 2", "Fehler", MB_OK | MB_ICONINFORMATION);
            pD3D->Release();
            delete[] pAdapters;
            return 1;
        }
        char acAdapterInfo[1024];
        sprintf(acAdapterInfo, "Adapter-ID: %d\nName: %s\nTreiber: %s\n TVersion: %d", iAdapter, pAdapters[iAdapter].Description ,pAdapters[iAdapter].Driver ,pAdapters[iAdapter].DriverVersion);
        MessageBox(hWnd,acAdapterInfo, "AInfo", MB_OK | MB_ICONINFORMATION);
    }
    pD3D->Release();
    delete[] pAdapters;
    
    return 0;
}
und diese Fehler kommen:
[Linker error] undefined reference to `Direct3DCreate9@4'
ld returned 1 exit status
C:\Dokumente und Einstellungen\Steffen\Desktop\Neuer Ordner (3)\Makefile.win [Build Error] [TEst.exe] Error 1

mfg
Empire

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Fehler im BSp

Beitrag von Dirty Oerti » Mi Mär 17, 2010 8:56 pm

Hast du die entsprechende Bibliothek in den Linkereinstellungen eingetragen?
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Empire
Beiträge: 272
Registriert: Mo Jan 26, 2009 5:36 pm

Re: Fehler im BSp

Beitrag von Empire » Do Mär 18, 2010 2:57 pm

ja
sonst gäbs noch viel mehr fehler

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Fehler im BSp

Beitrag von Xin » Do Mär 18, 2010 3:10 pm

Empire hat geschrieben:ja
sonst gäbs noch viel mehr fehler
Also explizit gefragt: Du hast die "D3D9.lib" in Deinen Linkereinstellungen drin?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Empire
Beiträge: 272
Registriert: Mo Jan 26, 2009 5:36 pm

Re: Fehler im BSp

Beitrag von Empire » Do Mär 18, 2010 7:11 pm

Ich hab sie nur mit #include hinzugefügt
mehr müsste auch nicht nötig ist da sie im Ordner "includs" und nicht "lib" enthalten ist
(Selbst wenn ich wöllte könnte ich sie nicht über Projekt Optionen hinzufügen)

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Fehler im BSp

Beitrag von Xin » Do Mär 18, 2010 7:30 pm

Empire hat geschrieben:Ich hab sie nur mit #include hinzugefügt
mehr müsste auch nicht nötig ist da sie im Ordner "includs" und nicht "lib" enthalten ist
(Selbst wenn ich wöllte könnte ich sie nicht über Projekt Optionen hinzufügen)
Doch... die Includes sind für den Compiler, die .lib musst Du dem Linker bekannt geben.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Empire
Beiträge: 272
Registriert: Mo Jan 26, 2009 5:36 pm

Re: Fehler im BSp

Beitrag von Empire » Fr Mär 19, 2010 1:57 pm

Das sind aber .h Dateien

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Fehler im BSp

Beitrag von Xin » Fr Mär 19, 2010 2:06 pm

Empire hat geschrieben:Das sind aber .h Dateien
Die Header-Dateien sind für den Compiler. Darin steht die Behauptung, dass es die Funktion 'Direct3DCreate9' gibt und er beim Ruf dieser Funktion nicht meckern soll.

Die .lib-Dateien befinden sich in einem anderen Ordner - üblicherweise in einem Ordner, der lib heißt und der mit dem SDK geliefert wird. Dort befinden sich die Funktionrümpfe, die Du aufrufst, wenn Du die Funktion Direct3DCreate9 aufrufst.
Du rufst nämlich nicht die Funktion in der DLL auf, sondern die Funktion, die in der .lib ist, die wiederum dafür sorgt, dass der Code in der DLL gerufen wird.

Der Linker hat nun den Auftrag Deinen 'Direct3DCreate9'-Ruf mit der entsprechenden Funktion zu verbinden. Wenn Du die .lib nicht bekannt gibst, weiß er nicht, womit er diesen Aufruf verlinken soll, also gibt es einen Linker-Fehler.

Also such die D3D9.lib im SDK und füge es den Pfad in die Abhängigkeiten des Linkers ein.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten