读书人

error C2712: 没法在要求对象展开的函

发布时间: 2013-09-05 16:02:07 作者: rapoo

error C2712: 无法在要求对象展开的函数中使用 __try
VC2008创建的扩展DLL工程,在函数
int Usb_Read(BYTE * buf,int len,int endpoint)
{
__try{
int aa=0;
int ii=5/aa;
}__except(1){
}

//以下是函数的功能代码

bool bTimeout;
int iResult;
int iMaxTime;
CString str;

TRACE0("");

WaitForSingleObject(hEvent, INFINITE);

SetEvent(hEvent);

MessageBox();

}

编译后
c:\mydir\vceegusb\vceegusb\dllmain.cpp(618) : error C2712: 无法在要求对象展开的函数中使用 __try

请高手指点,万分感激!
[解决办法]
正如错误内容描述那样,你不能使用 CString str;这种形式。

我试过,可能不全,但函数接受一个对象指针参数,然后使用该指针
这样,就可以使用 __try 了

所以你换一个方式吧……
[解决办法]
可能的解决方案:

将要求 SEH 的代码移动到另一个函数中
重写使用 SEH 的函数以避免使用具有析构函数的局部变量和参数。在构造函数或析构函数中不要使用 SEH
不使用 /EHsc 进行编译

[解决办法]
因为 __try 和 析构 是鱼和熊掌,所以只能选择一个。

读书人网 >VC/MFC

热点推荐