0
我目前正在做一些使用開羅的測試來代替一些現有的GDI/GDI + 在Visual C++ 2010中的代碼,它似乎工作正常,但我每次收到 錯誤消息關閉我的應用程序:退出時出現開羅錯誤信息
「第一次機會異常在0x68e629dc在CairoTest.exe:0000005: 訪問衝突讀取位置0xabababa7」
該錯誤僅發生,如果我叫cairo_paint(CR),而 應用程序正在運行 - 如果我註釋此行,它會消失。在我的應用程序的唯一 開羅到目前爲止的代碼是:
CChildView::CChildView()
{
testsurface = cairo_image_surface_create_from_png("BlackShinyBackground.png");
}
CChildView::~CChildView()
{
cairo_surface_destroy(testsurface);
}
void CChildView::OnPaint()
{
CPaintDC dc(this);
cairo_surface_t *surface = cairo_win32_surface_create(dc.m_hDC);
cairo_t *cr = cairo_create (surface);
cairo_set_source_surface(cr, testsurface, 0, 0);
cairo_paint(cr);
cairo_destroy (cr);
cairo_surface_destroy (surface);
}
可有人點我的,我做錯了什麼方向?
就像我說的,代碼似乎工作正常,但我不喜歡只是耕耘,無論何時我可以看到錯誤。
謝謝,這解釋了很多。我認爲我需要做更多的挖掘工作來找出究竟發生了什麼。 我只是不想讓調試器產生錯誤信息 - 經驗告訴我,如果你忽略它們,他們有一種討厭的習慣,會回來咬你。 – Redeye 2010-08-31 21:06:05
對,我已經做了更多的研究,並且在這裏發現了一篇非常好的文章: http://blogs.msdn.com/b/davidklinems/archive/2005/07/18/440150。 aspx 進一步的檢查確實證明它在Cairo DLL中導致異常。然而,我已經滿足了我對發生的事情的好奇心,所以我現在要離開它而不用擔心它。 謝謝你幫助傑瑞。 – Redeye 2010-09-01 10:53:05