Thread: build errors migrated from dx9b to dx9c sdk

  1. #1
    Registered User
    Join Date
    Oct 2003
    Posts
    50

    build errors migrated from dx9b to dx9c sdk

    hi all,

    did anyone see link errors like these :
    Code:
    Linking...
    d3dx9.lib(cfxlprogram.obj) : error LNK2001: unresolved external symbol ___security_cookie
    d3dx9.lib(cshaderprogram.obj) : error LNK2001: unresolved external symbol ___security_cookie
    d3dx9.lib(c30program.obj) : error LNK2001: unresolved external symbol ___security_cookie
    d3dx9.lib(cpslegacyprogram.obj) : error LNK2001: unresolved external symbol ___security_cookie
    d3dx9.lib(cpsprogram.obj) : error LNK2001: unresolved external symbol ___security_cookie
    when moving from DX9b (summer release) to the more recent DX9c SDK versions? I'm using VC++6

    cheers

  2. #2
    C++ Developer XSquared's Avatar
    Join Date
    Jun 2002
    Location
    Ontario, Canada
    Posts
    2,718
    You need to use a replacement lib from here.
    Naturally I didn't feel inspired enough to read all the links for you, since I already slaved away for long hours under a blistering sun pressing the search button after typing four whole words! - Quzah

    You. Fetch me my copy of the Wall Street Journal. You two, fight to the death - Stewie

  3. #3
    ---
    Join Date
    May 2004
    Posts
    1,379
    I think Bubba posted the same problem a while ago.

  4. #4
    Registered User VirtualAce's Avatar
    Join Date
    Aug 2001
    Posts
    9,607
    But I still have a problem

    Compiling...
    AsteriodsMain.cpp
    d:\dx90sum2004sdk\include\dsound.h(305) : error C2146: syntax error : missing ';' before identifier 'dwReserved1'
    d:\dx90sum2004sdk\include\dsound.h(305) : error C2501: 'DWORD_PTR' : missing storage-class or type specifiers
    d:\dx90sum2004sdk\include\dsound.h(305) : error C2501: 'dwReserved1' : missing storage-class or type specifiers
    d:\dx90sum2004sdk\include\dsound.h(306) : error C2146: syntax error : missing ';' before identifier 'dwReserved2'
    d:\dx90sum2004sdk\include\dsound.h(306) : error C2501: 'DWORD_PTR' : missing storage-class or type specifiers
    d:\dx90sum2004sdk\include\dsound.h(306) : error C2501: 'dwReserved2' : missing storage-class or type specifiers
    Even when I've replaced the d3dx9.lib with the MSVC 6 version.

    This is a data type error and I have no idea how to fix it except to declare DWORD_PTR myself.

    Incidentally this is the only instance of DWORD_PTR I can find in the whole file. Perhaps this is a typo by MS??? But it is also in the help file as DWORD_PTR. ?? Messed up stuff.

    I found the solution. It seems that MS ASSumes that we are going to be using MSVC .NET to develop DirectX apps on. Wrong ASSumption MS.

    You must have the basetsd.h file in your DirectX SDK include directory. Unfortunately its only available in the MS Platform SDK. So you can either download that or copy this from here. This solution was provided by Derek Smart, developer of the Battlecruiser, and the recent Battlecruiser Millenium series. I found the solution over at www.beyond3d.com on their forums. You might want to check their forums out - several pro developers are there and the advice is top notch.

    basetsd.h
    Code:
    /*++ 
    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_
    Last edited by VirtualAce; 12-04-2004 at 06:58 AM.

  5. #5
    Registered User
    Join Date
    Oct 2003
    Posts
    50
    thanks for that. i eventually solved the problem for myself by downloading the visual studio 5 beta and using that

    i may well go back to vc6 now it is an option though.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Build errors with gsl_complex
    By ZapoTex in forum C Programming
    Replies: 4
    Last Post: 05-08-2008, 11:41 AM
  2. DirectSound header issues
    By dxfoo in forum C++ Programming
    Replies: 0
    Last Post: 03-19-2006, 07:16 PM
  3. build errors
    By geek@02 in forum Linux Programming
    Replies: 2
    Last Post: 10-25-2005, 09:45 AM
  4. Question..
    By pode in forum Windows Programming
    Replies: 12
    Last Post: 12-19-2004, 07:05 PM
  5. build errors and cin problem
    By steve043 in forum C++ Programming
    Replies: 5
    Last Post: 04-04-2004, 12:56 PM