【发布时间】:2010-12-04 10:21:35
【问题描述】:
这感觉很像在干草堆里找一根针,但是就这样吧。
我正在构建一个 Windows Mobile 6.1 应用程序。具体来说,我正在尝试移植OpenCV framework。在成功(怀疑)为 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 编译和链接都没有错误。 有没有人见过这样的事情?关于如何调试的任何想法?
【问题讨论】:
-
用几个不同的标志重新编译似乎已经解决了这个问题。
标签: c++ stack opencv call windows-ce