From: Victor R. <vi...@ua...> - 2004-07-27 14:27:01
|
On Tue, 27 Jul 2004 14:41:04 +0200 "Gisle Vanem" <gi...@bg...> wrote: > "Victor Romanov" <vi...@ua...> said: > > > But if I call my MINGW library from MSVC7 I receive run time error at line > > pClass->AddRef(); The function is called(I see ?AddRef ? string in my > > console). Error is ?Run-Time Check Failure #0. The value of ESP was not > > property saved across a function call. This is usually a result of calling > >a > > function declared with one calling conversion with a function pointer > >declared > > with different calling conversion.? > > So, didn't that give you a clue? > > "CUnk::AddRef()" takes a hidden 'this' pointer. MSVC and g++ passed > such a pointer differently. MSCV uses the ECX register while g++ used > the stack I believe. > > A fix is to make AddRef() static or use another call convention than > the default/implicit __thiscall. That probably leaves out the virtual. Why > should it be virtual anyway? I did't look too closely, but isn't it supposed > to count the # of instances of your objects? So would makeing it static > work? > > --gv The object is standard IUnknown. If binary compatibility is different with MSVC it is mean what I can?t from MinGW call the MS Exel, Access controls, DirectX. It is correct? ---- http://photo.alkar.net/ |