這種感覺很像在乾草堆中找到一根針,但這裏就是這樣。邊界之間的調用堆棧損壞
我正在構建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