Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

27.12.2012, 22:59

dxerr9.lib kann nicht geöffnet werden. Kapitel 2 Seite 109.

Morgen alle miteinander.

Ich habe folgendes Problem:
Auf Seite 109 gibts ein Beispiel bei dem es darum geht eine Direct3D Schnittstelle zu erstellen und Adapter auszulesen.

Folgender Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <Windows.h>
#include <stdio.h>
#include <d3d9.h>

int WINAPI WinMain (HINSTANCE hInstance,
                    HINSTANCE hPrevInstance,
                    char*     pcCmdLine,
                    int       iShowCmd)
{
    // Schnittstelle für Direct3D erzeugen

    PDIRECT3D9 pD3D = Direct3DCreate9 (D3D_SDK_VERSION);

    if (!pD3D)
    {
        MessageBox (NULL, "Fehler beim Erzeugen der Direct3D-Schnittstelle!",
                    "Fehler", MB_OK | MB_ICONEXCLAMATION);  // Fehler!
        return 1;
    }

    // Anzahl der Adapter ermitteln
    int iNumAdapters = pD3D->GetAdapterCount ();

    // Speicher reservieren und Informationen über jeden Adapter sammeln
    D3DADAPTER_IDENTIFIER9 *pAdapters = new D3DADAPTER_IDENTIFIER9 [iNumAdapters];

    for (int iAdapter = 0; iAdapter < iNumAdapters; iAdapter++)
    {
        if (FAILED (pD3D->GetAdapterIdentifier (iAdapter, 0, &pAdapters [iAdapter])))
        {
            // Fehler
            MessageBox (NULL,  "Adapterinformationen konnten nicht abgefragt werden!",
                        "Fehler", MB_OK | MB_ICONEXCLAMATION);

            // Aufräumen

            pD3D->Release ();

            delete [] pAdapters;
            return 1;
        }

        // Adapterinformationen anzeigen
        char acAdapterInfo [1024];
        sprintf (acAdapterInfo, "Adapter-ID: %d\n"
                                "Name: %s\n"
                                "nTreiberversion: %d",
                                iAdapter,
                                pAdapters [iAdapter].Description,
                                pAdapters [iAdapter].Driver,
                                pAdapters [iAdapter].DriverVersion);

        MessageBox (NULL, acAdapterInfo, "Adapter gefunden", MB_OK | MB_ICONINFORMATION);
        
    }

    // Aufräumen
    pD3D->Release ();
    delete [] pAdapters;

    return 0;
}


Steht genau so im Buch (3. Auflage).

1. Problem, Erzeugt jeder "MessageBox" Aufruf einen Fehler, und zwar beim 2 und 3 Parameter: "Error: Das Argument vom Typ ""const char*"" ist mit dem Parameter vom Typ ""LPCWSTR"" inkompatibel.

Ich habe dann einfach versucht den 2 und 3 Parameter einfach mit "(LPCWSTR)" zu casten, quasi: "(LPCWSTR) "Adapter gefunden"" Doch wird dann in der Message Box der gesamte Text in irgend welchen Schriftzeichen dargestellt, mit denen man selbst verständlich nichts anfangen kann.

2. Problem, dxerr9.lib kann nicht geöffnet werden. Ich hab dann in anderen Foren gelesen, dass bei neueren SDKs diese jetzt dxerr.lib heißt.
Wenn ich im Linker jetzt statt dxerr9.lib, dxerr.lib angebe, ändert sich nichts es kommt halt dann der Fehler "dxerr.lib kann nicht geöffnet werden."
Obwohl diese Datei aber im SDK Ordner vorhanden ist, x64 und x86.

Wäre echt nett wenn mir wer helfen könnte, danke schon mal im Vornhinein!!

2

27.12.2012, 23:44

Das erste ist ein Zeichensatzproblem, du solltest dazu alles hier finden:
http://social.msdn.microsoft.com/Forums/…5-53c1d403762a/

(TEXT() Makro um die C-Strings bauen)
Lieber dumm fragen, als dumm bleiben!

3

27.12.2012, 23:45

Setz mal in den Projekteinstellungen den Zeichensatz auf "Multibyte-Zeichensatz" ;)

EDIT: Mist da war einer schneller :D
"Wer Angst hat, dass ihm seine Ideen geklaut werden, der scheint nicht viele zu haben. "

4

28.12.2012, 13:22

Setz mal in den Projekteinstellungen den Zeichensatz auf "Multibyte-Zeichensatz" ;)

EDIT: Mist da war einer schneller :D


Kannst du mir vielleicht genau sagen wo ich das einstelle?
Finde nirgends wo was wo ich den Zeichensatz ändern kann, bitte danke!

Benutze Visual Studio 2012 Express sollte das helfen.

5

28.12.2012, 13:29

Ich kann es jetzt nur für die 2010er Version beschreiben....
Da gehst du mit Rechtsklick auf das Projekt und dann unter dem Menüpunkt Konfigurationseigenschaften->Allgemein->Zeichensatz
Ich hoffe in der 2012er Version ist es zumindest ähnlich ;)
"Wer Angst hat, dass ihm seine Ideen geklaut werden, der scheint nicht viele zu haben. "

6

28.12.2012, 14:04

Ich kann es jetzt nur für die 2010er Version beschreiben....
Da gehst du mit Rechtsklick auf das Projekt und dann unter dem Menüpunkt Konfigurationseigenschaften->Allgemein->Zeichensatz
Ich hoffe in der 2012er Version ist es zumindest ähnlich ;)


Alles klar danke das funktioniert jetzt alles wie es soll.

Bleibt nur noch der Fehler dass dxerr9.lib bzw. dxerr.lib nicht geöffnet werden kann.

Der Fehler dass dxerr9.lib nicht geöffnet werden kann, ist auch irgendwie logisch, da es diese Datei erst gar nicht gibt bei neuen SDKs.

Aber selbst wenn ich im Linker dxerr.lib eingebe kommt trotzdem der Fehler nur eben dass dxerr.lib nicht geöffnet werden kann, obwohl es diese Datei serwohl gibt.

In diesem Beispiel ist es zwar nicht relevant ob diese Datei eingebunden ist oder nicht, aber für spätere Beispiele sollte sie das sein, laut Buch zumindest.

Vielleicht hast du da auch ne Idee, danke.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

28.12.2012, 14:42

Aber selbst wenn ich im Linker dxerr.lib eingebe kommt trotzdem der Fehler nur eben dass dxerr.lib nicht geöffnet werden kann, obwohl es diese Datei serwohl gibt.

Stimmen die Suchpfade?

Abgesehen davon willst du den Zeichensatz wenn dann auf "Not Set" stellen und nicht auf Multibyte und ich gehe davon aus, dass du das hier natürlich schon gesehen hast: Software-Update: Alle Projekte aus dem Buch "3D-Spieleprogrammierung" für Visual C++ 2010 & neues DirectX-SDK

8

28.12.2012, 15:49

Aber selbst wenn ich im Linker dxerr.lib eingebe kommt trotzdem der Fehler nur eben dass dxerr.lib nicht geöffnet werden kann, obwohl es diese Datei serwohl gibt.

Stimmen die Suchpfade?

Abgesehen davon willst du den Zeichensatz wenn dann auf "Not Set" stellen und nicht auf Multibyte und ich gehe davon aus, dass du das hier natürlich schon gesehen hast: Software-Update: Alle Projekte aus dem Buch "3D-Spieleprogrammierung" für Visual C++ 2010 & neues DirectX-SDK


Ich hab alles mehrfach geprüft, aber aufgefallen ist mir nichts.

Ich hab jetzt auf Multibyte gestellt und das Programm hat normal funktioniert und die Texte in der Message Box sind auch wieder leserlich.
Hab ich schon gesehen ja, nur geht es hier auch nicht um die TriBase Engine, sondern nur um die Direct3D Schnittstelle.
SDK hab ich auch schon das vom Juni 2010.

Werbeanzeige