trinking iterface calls mscc++ 2 g++
-
I have interfaces definitions. I have implemented them in dll's These dll's worked as cutom plugins. Usually they were build by msvc. Each dll exported 3 function, GetIterfacesCLSIDS()/Create(CLSID)/Destroy(CLSID). It woked superb when both (client, plug in were buld by msvc compiler) or both with mingw compiler. The client now has growned and I'm using massive MFC (has lot's of gui and u knw is easy). Now I try to build the dll's on demand (as compiled script) and I use free gcc (g++) from (Mingw) C++ compiler and dlltool. The dll is oj, and exported functions are called and my instances created ok. Now I get 'ESP was not saved corectly durring a ... see the call type' So is not the call type. As long the object imlementor of the interface is created my dll and the virtual table layout is different than the msvc. Msvc vtable is PObject->PVtable->[Vf1][Vf2]..[Vfk] while mingw vtable is PObject->[Vf1][Vf2]..[Vfk] So there is a missing intermdiare [PVtable] pointer there. Does any one know how to hack the calls using trunks or __asm (back and forward) these ? Thanks:((
-
I have interfaces definitions. I have implemented them in dll's These dll's worked as cutom plugins. Usually they were build by msvc. Each dll exported 3 function, GetIterfacesCLSIDS()/Create(CLSID)/Destroy(CLSID). It woked superb when both (client, plug in were buld by msvc compiler) or both with mingw compiler. The client now has growned and I'm using massive MFC (has lot's of gui and u knw is easy). Now I try to build the dll's on demand (as compiled script) and I use free gcc (g++) from (Mingw) C++ compiler and dlltool. The dll is oj, and exported functions are called and my instances created ok. Now I get 'ESP was not saved corectly durring a ... see the call type' So is not the call type. As long the object imlementor of the interface is created my dll and the virtual table layout is different than the msvc. Msvc vtable is PObject->PVtable->[Vf1][Vf2]..[Vfk] while mingw vtable is PObject->[Vf1][Vf2]..[Vfk] So there is a missing intermdiare [PVtable] pointer there. Does any one know how to hack the calls using trunks or __asm (back and forward) these ? Thanks:((