我定义了一个变量是EdsError类型的。
它的定义:typedef EdsUInt32 EdsError;
而EdsUInt32的定义是:typedef unsigned long EdsUInt32; 然后在debug时发现:
unsigned long test = (unsigned long)err;//此时的err在“监视”窗口中显示为193.int型。
if(test > 0)//此时tset的值为0,而err的值显示仍为193。这是怎么回事?直接把err放在这里判断,也是按0来进行的。把比较的操作换成== 等都是0值。
{
...
}
这两句是挨着的。本来直接用err判断的,总出问题。才想把err的值取出来看看。release的结果逻辑也不对。
很奇怪的问题。哪位好心人遇见过,帮忙看看。
它的定义:typedef EdsUInt32 EdsError;
而EdsUInt32的定义是:typedef unsigned long EdsUInt32; 然后在debug时发现:
unsigned long test = (unsigned long)err;//此时的err在“监视”窗口中显示为193.int型。
if(test > 0)//此时tset的值为0,而err的值显示仍为193。这是怎么回事?直接把err放在这里判断,也是按0来进行的。把比较的操作换成== 等都是0值。
{
...
}
这两句是挨着的。本来直接用err判断的,总出问题。才想把err的值取出来看看。release的结果逻辑也不对。
很奇怪的问题。哪位好心人遇见过,帮忙看看。
解决方案 »
- 数组
- VC++ 中有CHuabanView类这个类么?有的画如何构造创建
- 求一份Intel IJL库的中文SDK文档详细说明
- 在vc编译其中,编译可以通过,但是右键pop菜单的转到定义,却找不到变量的定义,是什么原因??
- 寻找熟悉费尔防火墙开发技术的开发人员
- 我的InstallShield6安装包如何去掉反安装功能?
- 使用CAsyncSocket继承并编写了一个Com自动化组件在VB里用,VB非正常退出时出现ASSERT错误,在线给分
- 中文VC技术内幕哪里有下
- 关于C++编写控件时头文件的问题
- 关于VC源码研读的问题
- 树节点问题
- 用过 Mime Filter 技术的进来瞧瞧, 当某个Mime类型已被其他软件注册了怎么办???
写成这样试验一下
另外就是
TRACE(L"%ld",err);
看看到底是什么值,我遇见过watch窗口输出的数不是真实值的情况
trace出来的一样吗?
//如果给err安排一个指针,发现在监视窗口中此时的指针和&err的值是不一样的。
err = EdsSendCommand(camera,kEdsCameraCommand_TakePicture , 0);//err监视显示为193
TRACE(L"%ld",err);//输出0
if(err > 0)//进入else执行。
{
AfxMessageBox(CAM_ERROR_TAKE);
exit(0);
}
else
{
EdsSendStatusCommand( camera, kEdsCameraStatusCommand_UIUnLock,0);
return;
}
err 定义的是什么类型,watch 中显示的就是什么类型.不会变来变去的.EdsSendCommand(camera,kEdsCameraCommand_TakePicture , 0) 是个什么冬冬.不明不白的另外 把 err 换成 nError,看看结果是不是正确
..................
..................
if(test > NOERROR)
{
::AfxMessage(_T("Error."));
} else {
::AfxMessage(_T("No error."));
}
193 绝对不会是地址值.WINDOWS 中不允许直接访问内存地址小于64K的地址
使用EDSDK中的函数,需要先InitSDK,然后才能使用,操作都完成后,需要执行一个TerminalSDK。相机打开过程,整个返回值都正常,我把相机关了,才出现上面的错误。err的返回值都不真实了。我在想可能是关闭相机后EDSDK自动捕捉到这个事件,然后做了些什么让返回值都为0了。但是我的变量怎么会在watch中也显示错误,从类型到数值,全不对。从关闭相机后,数值很规律的一直是193和int,如果是堆栈溢出,我想应该能catch出来,可是没有。EdsSendCommand(camera,kEdsCameraCommand_TakePicture , 0);这个函数返回执行结果,类型为unsigned long。
用err来接收这个结果。现在用别的办法解决程序的功能问题了。可是这个奇怪的watch值还是没有变。
试试。
更友好的方式是 err,hr ,可以直接显示解析后的文字错误信息。