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

David Scherfgen

Administrator

  • »David Scherfgen« ist der Autor dieses Themas

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

1

29.05.2005, 18:50

Fehler in DSOUND.H bei DX9 Summer 2004 und Visual C++ 6

Hallo,

hier wird immer wieder die Frage gestellt, wie man folgende Fehler wegbekommt, die beim Kompilieren der Beispielprogramme aus der zweiten Auflage (welche das Summer 2004 Update des DirectX 9-SDKs benutzt), wegbekommt:

Quellcode

1
2
3
4
5
6
7
8
c:\programme\microsoft directx 9.0 sdk (summer 2004)\include\dsound.h(305) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'dwReserved1'
c:\programme\microsoft directx 9.0 sdk (summer 2004)\include\dsound.h(305) : error C2501: 'DWORD_PTR' : Fehlende Speicherklasse oder Typbezeichner
c:\programme\microsoft directx 9.0 sdk (summer 2004)\include\dsound.h(305) : error C2501: 'dwReserved1' : Fehlende Speicherklasse oder Typbezeichner
c:\programme\microsoft directx 9.0 sdk (summer 2004)\include\dsound.h(306) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'dwReserved2'
c:\programme\microsoft directx 9.0 sdk (summer 2004)\include\dsound.h(306) : error C2501: 'DWORD_PTR' : Fehlende Speicherklasse oder Typbezeichner
c:\programme\microsoft directx 9.0 sdk (summer 2004)\include\dsound.h(306) : error C2501: 'dwReserved2' : Fehlende Speicherklasse oder Typbezeichner
c:\programme\microsoft directx 9.0 sdk (summer 2004)\include\strmif.h(1018) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'HSEMAPHORE'
c:\programme\microsoft directx 9.0 sdk (summer 2004)\include\strmif.h(1018) : fatal error C1004: Unerwartetes Dateiende gefunden


Dies ist ein Kompatibilitätsproblem. Seit dem Summer 2004-Update des DirectX SDKs unterstützt Microsoft den Visual C++ 6-Compiler nicht mehr.
Das heißt jedoch nicht, dass man die Anwendungen nicht trotzdem kompilieren kann.
Um das Problem zu beheben, geht man wie folgt vor:

1. Installiere die Extras für das DirectX SDK Summer 2004 (dxsdk_sum2004_extras.exe).

2. Im Installationsordner wird der Ordner "Extras" angelegt. Dort befindet sich eine Datei D3DX9.LIB. Diese Datei ist mit Visual C++ 6 kompatibel, die standardmäßig installierte D3DX9.LIB ist dies nicht. Also benennst Du die ursprüngliche D3DX9.LIB um (z.B. In D3DX9VC7.LIB) und kopierst die zu Visual C++ 6 kompatible Datei an ihre Stelle.

3. Kopiere den folgenden Code und speichere ihn unter dem Namen BASETSD.H ab, und zwar im Include-Verzeichnis von DirectX oder im Include-Verzeichnis des Compilers:

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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
/*++ 

Copyright (c) Microsoft Corporation.  All rights reserved. 

Module Name: 

    basetsd.h 

Abstract: 

    Type definitions for the basic sized types. 

Author: 

Revision History: 

--*/ 

#ifndef _BASETSD_H_ 
#define _BASETSD_H_ 

#if _MSC_VER > 1000 
#pragma once 
#endif 

#ifdef __cplusplus 
extern "C" { 
#endif 

typedef signed char         INT8, *PINT8; 
typedef signed short        INT16, *PINT16; 
typedef signed int          INT32, *PINT32; 
typedef signed __int64      INT64, *PINT64; 
typedef unsigned char       UINT8, *PUINT8; 
typedef unsigned short      UINT16, *PUINT16; 
typedef unsigned int        UINT32, *PUINT32; 
typedef unsigned __int64    UINT64, *PUINT64; 

// 

// The following types are guaranteed to be signed and 32 bits wide. 

// 


typedef signed int LONG32, *PLONG32; 

// 

// The following types are guaranteed to be unsigned and 32 bits wide. 

// 


typedef unsigned int ULONG32, *PULONG32; 
typedef unsigned int DWORD32, *PDWORD32; 

#if !defined(_W64) 
#if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 
#define _W64 __w64 
#else 
#define _W64 
#endif 
#endif 

// 

// The INT_PTR is guaranteed to be the same size as a pointer.  Its 

// size with change with pointer size (32/64).  It should be used 

// anywhere that a pointer is cast to an integer type. UINT_PTR is 

// the unsigned variation. 

// 

// __int3264 is intrinsic to 64b MIDL but not to old MIDL or to C compiler. 

// 

#if ( 501 < __midl ) 

    typedef [public] __int3264 INT_PTR, *PINT_PTR; 
    typedef [public] unsigned __int3264 UINT_PTR, *PUINT_PTR; 

    typedef [public] __int3264 LONG_PTR, *PLONG_PTR; 
    typedef [public] unsigned __int3264 ULONG_PTR, *PULONG_PTR; 

#else  // midl64 

// old midl and C++ compiler 


#if defined(_WIN64) 
    typedef __int64 INT_PTR, *PINT_PTR; 
    typedef unsigned __int64 UINT_PTR, *PUINT_PTR; 

    typedef __int64 LONG_PTR, *PLONG_PTR; 
    typedef unsigned __int64 ULONG_PTR, *PULONG_PTR; 

    #define __int3264   __int64 

#else 
    typedef _W64 int INT_PTR, *PINT_PTR; 
    typedef _W64 unsigned int UINT_PTR, *PUINT_PTR; 

    typedef _W64 long LONG_PTR, *PLONG_PTR; 
    typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR; 

    #define __int3264   __int32 

#endif 
#endif // midl64 


// 

// HALF_PTR is half the size of a pointer it intended for use with 

// within structures which contain a pointer and two small fields. 

// UHALF_PTR is the unsigned variation. 

// 


#ifdef _WIN64 

#define ADDRESS_TAG_BIT 0x40000000000UI64 

typedef __int64 SHANDLE_PTR; 
typedef unsigned __int64 HANDLE_PTR; 
typedef unsigned int UHALF_PTR, *PUHALF_PTR; 
typedef int HALF_PTR, *PHALF_PTR; 

#if !defined(__midl) 
__inline 
unsigned long 
HandleToULong( 
    const void *h 
    ) 
{ 
    return((unsigned long) (ULONG_PTR) h ); 
} 

__inline 
long 
HandleToLong( 
    const void *h 
    ) 
{ 
    return((long) (LONG_PTR) h ); 
} 

__inline 
void * 
ULongToHandle( 
    const unsigned long h 
    ) 
{ 
    return((void *) (UINT_PTR) h ); 
} 


__inline 
void * 
LongToHandle( 
    const long h 
    ) 
{ 
    return((void *) (INT_PTR) h ); 
} 


__inline 
unsigned long 
PtrToUlong( 
    const void  *p 
    ) 
{ 
    return((unsigned long) (ULONG_PTR) p ); 
} 

__inline 
unsigned int 
PtrToUint( 
    const void  *p 
    ) 
{ 
    return((unsigned int) (UINT_PTR) p ); 
} 

__inline 
unsigned short 
PtrToUshort( 
    const void  *p 
    ) 
{ 
    return((unsigned short) (unsigned long) (ULONG_PTR) p ); 
} 

__inline 
long 
PtrToLong( 
    const void  *p 
    ) 
{ 
    return((long) (LONG_PTR) p ); 
} 

__inline 
int 
PtrToInt( 
    const void  *p 
    ) 
{ 
    return((int) (INT_PTR) p ); 
} 

__inline 
short 
PtrToShort( 
    const void  *p 
    ) 
{ 
    return((short) (long) (LONG_PTR) p ); 
} 

__inline 
void * 
IntToPtr( 
    const int i 
    ) 
// Caution: IntToPtr() sign-extends the int value. 

{ 
    return( (void *)(INT_PTR)i ); 
} 

__inline 
void * 
UIntToPtr( 
    const unsigned int ui 
    ) 
// Caution: UIntToPtr() zero-extends the unsigned int value. 

{ 
    return( (void *)(UINT_PTR)ui ); 
} 

__inline 
void * 
LongToPtr( 
    const long l 
    ) 
// Caution: LongToPtr() sign-extends the long value. 

{ 
    return( (void *)(LONG_PTR)l ); 
} 

__inline 
void * 
ULongToPtr( 
    const unsigned long ul 
    ) 
// Caution: ULongToPtr() zero-extends the unsigned long value. 

{ 
    return( (void *)(ULONG_PTR)ul ); 
} 

#endif // !_midl 


#else  // !_WIN64 


#define ADDRESS_TAG_BIT 0x80000000UL 

typedef unsigned short UHALF_PTR, *PUHALF_PTR; 
typedef short HALF_PTR, *PHALF_PTR; 
typedef _W64 long SHANDLE_PTR; 
typedef _W64 unsigned long HANDLE_PTR; 

#define HandleToULong( h ) ((ULONG)(ULONG_PTR)(h) ) 
#define HandleToLong( h )  ((LONG)(LONG_PTR) (h) ) 
#define ULongToHandle( ul ) ((HANDLE)(ULONG_PTR) (ul) ) 
#define LongToHandle( h )   ((HANDLE)(LONG_PTR) (h) ) 
#define PtrToUlong( p ) ((ULONG)(ULONG_PTR) (p) ) 
#define PtrToLong( p )  ((LONG)(LONG_PTR) (p) ) 
#define PtrToUint( p ) ((UINT)(UINT_PTR) (p) ) 
#define PtrToInt( p )  ((INT)(INT_PTR) (p) ) 
#define PtrToUshort( p ) ((unsigned short)(ULONG_PTR)(p) ) 
#define PtrToShort( p )  ((short)(LONG_PTR)(p) ) 
#define IntToPtr( i )    ((VOID *)(INT_PTR)((int)i)) 
#define UIntToPtr( ui )  ((VOID *)(UINT_PTR)((unsigned int)ui)) 
#define LongToPtr( l )   ((VOID *)(LONG_PTR)((long)l)) 
#define ULongToPtr( ul ) ((VOID *)(ULONG_PTR)((unsigned long)ul)) 

#endif // !_WIN64 


#define HandleToUlong(h)  HandleToULong(h) 
#define UlongToHandle(ul) ULongToHandle(ul) 
#define UlongToPtr(ul) ULongToPtr(ul) 
#define UintToPtr(ui)  UIntToPtr(ui) 

#define MAXUINT_PTR  (~((UINT_PTR)0)) 
#define MAXINT_PTR   ((INT_PTR)(MAXUINT_PTR >> 1)) 
#define MININT_PTR   (~MAXINT_PTR) 

#define MAXULONG_PTR (~((ULONG_PTR)0)) 
#define MAXLONG_PTR  ((LONG_PTR)(MAXULONG_PTR >> 1)) 
#define MINLONG_PTR  (~MAXLONG_PTR) 

#define MAXUHALF_PTR ((UHALF_PTR)~0) 
#define MAXHALF_PTR  ((HALF_PTR)(MAXUHALF_PTR >> 1)) 
#define MINHALF_PTR  (~MAXHALF_PTR) 

// 

// SIZE_T used for counts or ranges which need to span the range of 

// of a pointer.  SSIZE_T is the signed variation. 

// 


typedef ULONG_PTR SIZE_T, *PSIZE_T; 
typedef LONG_PTR SSIZE_T, *PSSIZE_T; 

// 

// Add Windows flavor DWORD_PTR types 

// 


typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR; 

// 

// The following types are guaranteed to be signed and 64 bits wide. 

// 


typedef __int64 LONG64, *PLONG64; 


// 

// The following types are guaranteed to be unsigned and 64 bits wide. 

// 


typedef unsigned __int64 ULONG64, *PULONG64; 
typedef unsigned __int64 DWORD64, *PDWORD64; 

// 

// Thread affinity. 

// 


typedef ULONG_PTR KAFFINITY; 
typedef KAFFINITY *PKAFFINITY; 

#ifdef __cplusplus 
} 
#endif 

#endif // _BASETSD_H_


Danach sollte es keine Fehlermeldungen mehr geben.