Re: Stack prob. Setting callback in native dll.
- From: "Michael Phillips, Jr." <mphillips53@xxxxxxxxxxxxxxx>
- Date: Tue, 20 Jun 2006 17:25:11 -0400
You may want to set the calling convention if it is not the default
WINAPI( StdCall ):
[DllImport("w32dll.dll", CallingConvention=CallingConvention.Cdecl)]
static void dllSetCallFp( void (*aFp)(void*) );
<dlbriggs1729@xxxxxxxxx> wrote in message
news:1150837798.880414.310440@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
I have a 3th party dll writen in C. I have no problem calling most
functions in the dll from the managed code. But there is a function
that take a function pointer for setting a callback function that I am
having problems with.
I have the following code:
First in a wrapper class
[DllImport("w32dll.dll")] static void dllSetCallFp( void
(*aFp)(void*) );
Then in seperate class.
delegate void funDelegate(void*);
typedef void ( *FUNPT)(void*);
funDelegate ^ fp = gcnew funDelegate(MFun);
pin_ptr<funDelegate^> pp = &fp;
IntPtr ip = Marshal::GetFunctionPointerForDelegate(fp);
FUNPT cb = static_cast<FUNPT>(ip.ToPointer());
Wrapper::dllSetCallFp(cb);
MFun is just a test function.
void Client::MFun(void* pV)
{
int i = 9;
}
The problem is I can debug into the calling of MFun but when I return I
get the following errors
Run-Time Check Failure #0 - The value of ESP was not properly saved
across a function call. This is usually a result of calling a function
declared with one calling convention with a function pointer declared
with a different calling convention.
Then
'FatalExecutionEngineError'
.
- Follow-Ups:
- Re: Stack prob. Setting callback in native dll.
- From: dlbriggs
- Re: Stack prob. Setting callback in native dll.
- References:
- Stack prob. Setting callback in native dll.
- From: dlbriggs1729
- Stack prob. Setting callback in native dll.
- Prev by Date: Stack prob. Setting callback in native dll.
- Next by Date: Re: Stack prob. Setting callback in native dll.
- Previous by thread: Stack prob. Setting callback in native dll.
- Next by thread: Re: Stack prob. Setting callback in native dll.
- Index(es):
Relevant Pages
|