0

COM ポートベースの通信とリモート (IP) ビデオ ストリームを介してデバイスと同時に動作するマルチスレッド プログラムがあります。また、プログラムは OpenCV ライブラリを使用してデータを処理します。

問題は、シグナルなしでシャットダウンすることです (実行時エラーもその他のエラーもキャッチされません。ログ ファイルにも有用なものはありません)。最上位のアプリケーション エラー イベント ハンドラが設定されていますが、プログラムがクラッシュした兆候はまだありません。しばらくすると閉まります。

最大の問題は、すべての PC で何日もノンストップで正常に動作することです。しかし、顧客の PC では失敗するため、テスト プロセスが非常に遅くなります。顧客は別の国 (アジアのローカリゼーションであるのに対し、私たちのローカリゼーションはヨーロッパ) にいますが、プログラムは Unicode サポートで構築されています。

これまでのところ、ローカリゼーションの問題とアンチウイルス アクティビティについていくつかの推測を行ってきましたが、結果としては何も得られません。

プログラムは MinGW 4.4.x C++ と wxWidgets 2.9.3 で書かれています。

考えられる起源の提案をいただければ幸いです。

4

1 に答える 1

0

解決しました。

問題は、私たちが使用している OpenCV ビルド 2.3.1 内にありました。関数 cv::imdecode(...) は stdio.h の tempnam() 関数を使用して、デコード中に一時ファイルを生成します。x86 Windows システムでは、一時ファイルに 32767 個の新しい名前を付けると、この関数は失敗します。x64 Windows システムでは意味のない文字列を返しますが、それでも機能します。

そこで私が思いついた解決策は、デバイスから画像を受信して​​デコードする方法を変更することでした。

みんなコメントありがとう。

于 2013-10-29T09:58:38.753 に答える