这种感觉很像在干草堆中找到一根针,但这里就是这样。边界之间的调用堆栈损坏
我正在构建Windows Mobile 6.1应用程序。具体而言,我试图移植OpenCV framework。成功(怀疑)为ARM4I架构编译OpenCV后,我在一个简单的hello世界风格的应用程序中尝试了它。
从我的WinCE .EXE我调用存储在OpenCV .DLL(cxcore200.dll)中的函数。简单的调用看起来像这样。
IplImage *src = cvCreateImage(cvSize(320,240), 8, 1);
当我步入cvCreateImage时会出现主要问题。该方法的签名是:
IplImage * cvCreateImage(CvSize size, int depth, int channels){ ... }
所以,当我踏进这个功能,深度和尺寸PARAMS分别等于320和240(未图8和1如预期)。
仅供参考,CvSize声明为:
typedef struct
{
int width;
int height;
}
CvSize;
这显然是某种具有的事实,我越过边界进入可能不正确地编译DLL做调用堆栈腐败。
DLL和EXE都可以编译链接而不会出错。 有没有人见过类似的东西?有关如何调试的任何想法?
重新编译几个不同的标志似乎已经解决了这个问题。 – alyx 2009-10-09 01:18:19