0

有一个多线程程序通过基于 COM 端口的通信和远程 (IP) 视频流与设备同时运行。该程序还使用 OpenCV 库来处理数据。

问题是它在没有任何信号的情况下关闭(既没有捕获运行时错误,也没有捕获任何其他错误;日志文件也没有任何有用的东西)。设置了最顶层的应用程序错误事件处理程序,但仍然没有任何程序崩溃的迹象。它只是在一段时间后关闭。

最大的困难是它可以在我们所有的 PC 上不间断地运行好几天。但在客户 PC 上失败,因此测试过程非常缓慢。客户在不同的国家(亚洲本地化,而我们的是欧洲),但该程序是在支持 Unicode 的情况下构建的。

到目前为止,我们已经对本地化问题和防病毒活动进行了一些假设......但它没有给出任何结果。

该程序是用 MinGW 4.4.x C++ 和 wxWidgets 2.9.3 编写的

任何可能起源的建议将不胜感激。

4

1 回答 1

0

解决了。

问题出在我们使用的 OpenCV build 2.3.1 内部。函数 cv::imdecode(...) 使用 stdio.h 的 tempnam() 函数在解码期间生成临时文件。在 x86 Windows 系统下,此函数在 32767 个临时文件的新名称后失败。在 x64 Windows 系统下,它返回一些无意义的字符串,但它仍然有效。

所以我提出的解决方案是改变从我们的设备接收解码图像的方式。

谢谢大家的意见。

于 2013-10-29T09:58:38.753 回答