There are some different definitions of this API in various versions of the
Win32 toolkit headers. We use the scheme that is in the VC++ 6.0 release.
It sounds like your Borland compiler uses the "long" version of the
parameters instead of the "void*" scheme. You'll just have to change the
casts of the parameters to what the Borland compiler needs. Its unfortunate
that various vendors have chosen to use different signatures for this API,
and that MS has even changed it now between versions of the OS (Win2000
uses the "long" style.)
Perhaps, for the next release, we'll try to figure out the magic sequence
of #if's to make this work everywhere.
----------------------------------------
Dean Roddey
Software Weenie
IBM Center for Java Technology - Silicon Valley
[EMAIL PROTECTED]
Gareth Reakes <[EMAIL PROTECTED]> on 03/02/2000 09:54:41 AM
Please respond to [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
cc:
Subject: compiling XercesLib.dll under Borland Builder 5
Hi,
trying to compile under builder 5 I am getting the follwing errors:
[C++ Error] Win32PlatformUtils.cpp(621): E2034 Cannot convert 'void * *'
to 'long *'
[C++ Error] Win32PlatformUtils.cpp(621): E2342 Type mismatch in
parameter 'Destination' (wanted 'long *', got 'void * *')
[C++ Error] Win32PlatformUtils.cpp(621): E2034 Cannot convert 'void *'
to 'long'
[C++ Error] Win32PlatformUtils.cpp(621): E2342 Type mismatch in
parameter 'Exchange' (wanted 'long', got 'void *')
[C++ Error] Win32PlatformUtils.cpp(621): E2034 Cannot convert 'void *'
to 'long'
[C++ Error] Win32PlatformUtils.cpp(621): E2342 Type mismatch in
parameter 'Comperand' (wanted 'long', got 'void *')
[C++ Error] Win32PlatformUtils.cpp(621): E2034 Cannot convert 'long' to
'void *'
relating to c\src\util\Platforms\Win32\Win32PlatformUtils.cpp
//
---------------------------------------------------------------------------
// Miscellaneous synchronization methods
//
---------------------------------------------------------------------------
void*
XMLPlatformUtils::compareAndSwap( void** toFill
, const void* const newValue
, const void* const toCompare)
--cut out not relevant stuff
#else
//
// Note we have to cast off the constness of some of these because
// the system APIs are not C++ aware in all cases.
//
return ::InterlockedCompareExchange
(
toFill
, (void*)newValue
, (void*)toCompare
); ----line 621
#endif
}
have looked at the source and can not see how this would work!!
any help is greatly appreciated
--
Gareth Reakes, Software Engineer
XML Script/X-Studio Development Team Office: 44-1865-203192
http://www.xmlscript.org/ Mobile: 44-7797-503087