nuitrack测试程序,想为一个窗体加一个窗口过程函数,关键字"SetWindowLongPtr GWLP_WNDPROC"搜索到文章<【Demo 0029】截取同进程窗体消息>,参照该文章后就出现崩溃:
后面参考了doubango中调用SetWindowLongPtr的方式,把窗口过程函数转为LONG_PTR重新编译运行就不会再崩溃。
在nuitrack自带demo的rgb回调中调用cv::imwrite保存视频帧,然后在回掉函数中定义static的char数组来存储文件保存路径,结果就崩了,然后参考了demo,发现可以预先分配缓存,然后在该rgb回调中使用,然后把static去掉后就正常运行了,以后在VC中碰到这种0xC0000005错误,就要考虑到指针的问题。奇怪同样的代码放到android板子上,保存的图片是杂乱无章的,偶尔能有一副正常的。后面发现还是指针的问题,在保存的路径名数组长度过短,调用sprintf时候超过了路径名数组的最大容量。
后来又碰到了类似的错误,用新版版的live555库,但是引用的头文件却是旧版本的,然后就报了如下的错误,调试发现的确scs.subsession为空指针,将libengine这个库工程中依赖文件换成新版本的头文件路径,再次运行客户端就正常了。
类似上面,在调试ga-client的时候也是因为live555的头文件和库文件版本不匹配导致如下的崩溃:
"error LNK2019: 无法解析的外部符号 "class cv::Mat __cdecl cv::imread(class cv::String const &,int)" (?imread@cv@@YA?AVMat@1@ABVString@1@H@Z),函数 "后来换了对应版本的头文件后再编译就正常了。
测试内存泄漏的时候,直接安装了vld-2.5.1-setup.exe,然后直接将头文件、库文件以及动态库文件拷贝到相应目录,结果运行的时候报错"应用程序无法正常启动,请单击"确定"关闭应用程序",后来将vld安装包下bin\Win32目录下的文件全部拷贝到可执行程序目录中后就解决了这个问题。