You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-user@axis.apache.org by Tao Yang <ty...@simdesk.com> on 2006/02/27 23:32:35 UTC
exception code 61
Hi there,
I am trying moving my Axis C++ client from linux box to windows box but
no luck yet -
it seems the client loads the dll OK as I saw following from the output
window in MS Visual Studio:
'searchClient.exe': Loaded
'C:\opt\utils\axis-c-1-5-win32\bin\AxisXMLParserXerces.dll', No symbols
loaded.
'searchClient.exe': Loaded
'C:\opt\utils\xerces-c2_2_0-win32\bin\xerces-c_2_2_0.dll', No symbols
loaded.
'searchClient.exe': Loaded 'C:\WINDOWS\system32\msvcirt.dll', No symbols
loaded.
'searchClient.exe': Loaded
'C:\opt\utils\axis-c-1-5-win32\bin\HTTPTransport.dll', No symbols loaded.
'searchClient.exe': Loaded
'C:\opt\utils\axis-c-1-5-win32\bin\HTTPChannel.dll', No symbols loaded.
However, once it step into the generated stub code and call initialize at :
if (AXIS_SUCCESS != m_pCall->initialize(CPP_RPC_PROVIDER))
return RetArray;
it throws an exception which has a exception code 61 and and error msg:
"Error: expression cannot be evaluated"
as observed from the "Locals" window; at the same time, the output is:
First-chance exception at 0x7c81eb33 in searchClient.exe: Microsoft C++
exception: HTTPTransportException @ 0x014ff854.
First-chance exception at 0x7c81eb33 in searchClient.exe: Microsoft C++
exception: axiscpp::AxisGenException @ 0x014ff8f4.
First-chance exception at 0x7c81eb33 in searchClient.exe: Microsoft C++
exception: [rethrow] @ 0x00000000.
Any idea what have I done wrong?
I am trying to rebuild the axis to get an debuggable version - but
without luck neither, the error from ant is:
4290: C++ exception specification ignored except to indicate a function
is not __declspec(nothrow)
[cc] C:\opt\work\axis-c-src-1-5-win32\src\engine\Axis.cpp(302) :
error C2440: 'reinterpret_ca
st' : cannot convert from 'volatile long *' to 'void ** '
[cc] Conversion loses qualifiers
[cc] C:\opt\work\axis-c-src-1-5-win32\src\engine\Axis.cpp(302) :
fatal error C1903: unable to
recover from previous error(s); stopping compilation
where the code is like this:
static volatile long g_uModuleInitializing = 0;
static void start_initializing()
{
long exchange = 1;
long comperand = 0;
while (InterlockedCompareExchange(((void **)&g_uModuleInitializing),
static_cast<void *>(&exchange), static_cast<void *>(&comperand)));
}
the line 302 is the last line where calling
InterlockedCompareExchange(((void **)...
Any suggestion?
By the way, the same code works ok on linux.
Thanks!
Tao
Re: exception code 61
Posted by Adrian Dick <ad...@uk.ibm.com>.
Hi,
To answer your second question:
The locking mechanism used on Windows relied on an API which changed
between versions of MS Visual C++. Unfortunately, this was not discovered
until after Axis C++ 1.5 was released.
However, we have now fixed this section of code to use an alternate API.
If you wish to use source, you can get this from SVN (see instructions
here: http://ws.apache.org/axis/cpp/developers-guide.html#checkingOut )
Adrian
_______________________________________
Adrian Dick (adrian.dick@uk.ibm.com)
WebSphere MQ and ESB Development
IBM United Kingdom Ltd.
Tel: +44-(0)-1962-819212
Notes: Adrian Dick/UK/IBM@IBMGB
>
> I am trying to rebuild the axis to get an debuggable version - but
> without luck neither, the error from ant is:
> 4290: C++ exception specification ignored except to indicate a function
> is not __declspec(nothrow)
> [cc] C:\opt\work\axis-c-src-1-5-win32\src\engine\Axis.cpp(302) :
> error C2440: 'reinterpret_ca
> st' : cannot convert from 'volatile long *' to 'void ** '
> [cc] Conversion loses qualifiers
> [cc] C:\opt\work\axis-c-src-1-5-win32\src\engine\Axis.cpp(302) :
> fatal error C1903: unable to
> recover from previous error(s); stopping compilation
> where the code is like this:
>
> static volatile long g_uModuleInitializing = 0;
> static void start_initializing()
> {
> long exchange = 1;
> long comperand = 0;
> while (InterlockedCompareExchange(((void **)&g_uModuleInitializing),
> static_cast<void *>(&exchange), static_cast<void *>(&comperand)));
> }
> the line 302 is the last line where calling
> InterlockedCompareExchange(((void **)...
> Any suggestion?
>
> By the way, the same code works ok on linux.
>
> Thanks!
> Tao