これは、干し草の山から針を見つけるのとよく似ていますが、これで終わりです。
Windows Mobile 6.1 アプリケーションを構築しています。具体的には、 OpenCV フレームワークに移植しようとしています。ARM4I アーキテクチャ用の OpenCV のコンパイルに (おそらく) 成功したので、単純な hello world スタイルのアプリケーションでそれを試しています。
WinCE .EXE から、OpenCV .DLL (cxcore200.dll) に保存されている関数を呼び出しています。簡単な呼び出しは次のようになります。
IplImage *src = cvCreateImage(cvSize(320,240), 8, 1);
cvCreateImage に足を踏み入れると、大きな問題が発生します。メソッドのシグネチャは次のとおりです。
IplImage * cvCreateImage( CvSize size, int depth, int channels ){ ... }
したがって、この関数に足を踏み入れると、深さとサイズのパラメーターはそれぞれ 320 と 240 に等しくなります (予想される 8 と 1 ではありません)。
参考までに、CvSize は次のように宣言されています。
typedef struct
{
int width;
int height;
}
CvSize;
これは明らかに、不適切にコンパイルされた DLL に境界を越えている可能性があるという事実に関係する、ある種のコール スタックの破損です。
DLL と EXE の両方がエラーなしでコンパイルおよびリンクされます。誰もこのようなものを見たことがありますか?これをデバッグする方法についてのアイデアはありますか?