我正在尝试在Eclipse IDE和调试模式下的Windows 7操作系统上创建邮箱。我正在尝试使用Eclipse在Windows中创建类似邮箱的RTOS(实时操作系统)。

到目前为止,这是我的邮箱代码:

RTX_Mailbox RTX_CreateMailbox (unsigned long nSlotSize, unsigned long nSlots, char* szName)
{
    ::EnterCriticalSection (&csMailboxLock);
    CMailBox* pNewMailbox = new CMailBox (nSlotSize, szName);
    aMailBoxes.push_back (pNewMailbox);
    RTX_Mailbox mailBox = ((unsigned int)aMailBoxes.size ()) - 1;
    ::LeaveCriticalSection (&csMailboxLock);
    return mailBox;
}


我的应用程序一到达:: EnterCriticalSection(&csMailboxLock);就一直在运行时崩溃。

它返回此错误消息(在所附图片中突出显示):



文本中的错误消息:无可用的ntdll!TpCallbackMayRunLong()位于0x77d78e19

如果需要更多详细信息,请告诉我...

最佳答案

因此,如果有人遇到相同的问题,我确实找到了解决方案。

原来,您需要在使用之前初始化关键部分。因此,以下内容对其进行了修复:

InitializeCriticalSection(&csMailboxLock);


这是对我有帮助的链接:
https://sites.google.com/site/jeff00coder00seattle/home/coding/cpp-coding/c-win32-critical-section-example

关于c++ - 调用EnterCriticalSection时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25969876/

10-11 12:24