Pinvoke C#:委托函数导致崩溃
我试图使用下面的函数映射数据到达时要调用的另一个函数。 C++函数创建一个新的线程,在该线程中调用函数。它工作了几秒钟,但随后出现了一个错误:(我已打开“启用非托管代码调试以查看此错误”)Pinvoke C#:委托函数导致崩溃,c#,delegates,pinvoke,access-violation,C#,Delegates,Pinvoke,Access Violation,我试图使用下面的函数映射数据到达时要调用的另一个函数。 C++函数创建一个新的线程,在该线程中调用函数。它工作了几秒钟,但随后出现了一个错误:(我已打开“启用非托管代码调试以查看此错误”) threadTest.exe中0x7725158e处未处理的异常:0xC0000005:访问冲突。 如果我从委托函数中删除IntPtr frameData,一切正常,因此我怀疑应该对委托类的声明做些什么来避免这种情况发生 C#代码: 我想这只是一个电话会议的问题。您的C++代码假定CDDEL,但C代码则假定S
threadTest.exe中0x7725158e处未处理的异常:0xC0000005:访问冲突。
如果我从委托函数中删除IntPtr frameData
,一切正常,因此我怀疑应该对委托类的声明做些什么来避免这种情况发生
C#代码:
我想这只是一个电话会议的问题。您的C++代码假定CDDEL,但C代码则假定STDCALL。只需在P/Invoke中指定cdecl,您就应该是金色的。我也有同样的问题,但我不明白什么是
cdecl
和stdcall
您能解释一下吗?当网上有无数这样做的文章时,您为什么需要我解释呢?能够在线进行基础研究是程序员生活的先决条件。
public delegate void HandlerFunction(IntPtr frameData);
[DllImport("Cortex_SDK.dll")]
public extern static int Cortex_SetDataHandlerFunc(HandlerFunction function);
-----
public class myClass
{
static HandlerFunction myFunction = new HandlerFunction(threadFunction);
public myClass()
{
Cortex.Cortex_SetDataHandlerFunc(myFunction);
}
private static void threadFunction(IntPtr FrameData)
{
}
}