Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pinvoke C#:委托函数导致崩溃_C#_Delegates_Pinvoke_Access Violation - Fatal编程技术网

Pinvoke 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

我试图使用下面的函数映射数据到达时要调用的另一个函数。 C++函数创建一个新的线程,在该线程中调用函数。它工作了几秒钟,但随后出现了一个错误:(我已打开“启用非托管代码调试以查看此错误”)
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)
    {
    }
}