首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当调整窗口大小时,应用程序在windows 8.1上崩溃。

当调整窗口大小时,应用程序在windows 8.1上崩溃。
EN

Stack Overflow用户
提问于 2015-03-08 11:43:06
回答 1查看 169关注 0票数 1

大约一年前,我在视频工作室开发了一个gtkmm应用程序。当我有Windows和Visual 2010时,没有问题。现在,当我一年后在windows 8.1上运行并在Visual 2012中编译时,我可以启动它,但只要我试图调整窗口大小或按OK按钮,它就会崩溃。

在调试器中,当调整窗口大小时,我可以在这里看到它在回调函数中崩溃:

代码语言:javascript
复制
cr = window->create_cairo_context();

在这里按ok按钮时:

代码语言:javascript
复制
} 

这是回调函数返回时的末尾。

下面是源代码(回调函数)

代码语言:javascript
复制
 void MyWindow::on_button_clicked(Glib::ustring data) {

Glib::RefPtr<Gdk::Window> window = myDrawingArea.get_window();

if(window)
{

    Gtk::Allocation allocation = myDrawingArea.get_allocation();
    const int width = allocation.get_width();
    const int height = allocation.get_height();
    std::cout << "w = " << width << std::endl;

    // coordinates for the center of the window
    int xc, yc;
    xc = width / 2;
    yc = height / 2;

    Cairo::RefPtr<Cairo::Context> cr = window->create_cairo_context();

    cr->set_line_width(1.0);
    std::cout << "hello in on_button_clicked!!!\n";

    a = 0;
    b = 300;
    c = 200;
    d = 150;
    e = 350;
    f = 400;
    // draw red lines out from the center of the window
    cr->set_source_rgb(0.8, 0.5, 0.0);
    cr->move_to(a, b);
    cr->line_to(c, d);
    cr->move_to(c, d);
    cr->line_to(e, f);

    cr->stroke();
    std::cout << "here comes crasch!!!\n";
}

另一个(调整大小)

代码语言:javascript
复制
 bool MyWindow::on_drawing_expose_event(GdkEventExpose* event) {

Glib::RefPtr<Gdk::Window> window = myDrawingArea.get_window();
if(window)
{
    std::cout << "here comes crasch!!!\n";
        cr = window->create_cairo_context();

调试器给了我这个信息

代码语言:javascript
复制
    sigc::trackable <Unable to read memory> 
    Glib::ObjectBase    <Unable to read memory> 

以及调用堆栈

代码语言:javascript
复制
 >  ConsoleApplication4.exe!MyWindow::on_drawing_expose_event(_GdkEventExpose * event) Line 173 C++
ConsoleApplication4.exe!sigc::internal::slot_call1<sigc::bound_mem_functor1<bool,MyWindow,_GdkEventExpose *>,bool,_GdkEventExpose *>::call_it(sigc::internal::slot_rep * rep, _GdkEventExpose * const & a_1) Line 137   C++
gtkmm-vc100-2_4.dll!100a549b()  Unknown
[Frames below may be incorrect and/or missing, no symbols loaded for gtkmm-vc100-2_4.dll]   
libgtk-win32-2.0-0.dll!61859f1e()   Unknown
libgobject-2.0-0.dll!63a45aca() Unknown
libgobject-2.0-0.dll!63a567e4() Unknown
libgobject-2.0-0.dll!63a5dafe() Unknown
libgobject-2.0-0.dll!63a5de66() Unknown
libgtk-win32-2.0-0.dll!6197a0f7()   Unknown
libgdk-win32-2.0-0.dll!6c363fe9()   Unknown
libgdk-win32-2.0-0.dll!6c363f9d()   Unknown
msvcrt.dll!_free() Unknown
msvcrt.dll!_free() Unknown
000000a8()  Unknown
msvcrt.dll!_free() Unknown
libglib-2.0-0.dll!685f6947()    Unknown
gtkmm-vc100-2_4.dll!10011723()  Unknown
gtkmm-vc100-2_4.dll!10024836()  Unknown
libgobject-2.0-0.dll!63a45aca() Unknown
libgobject-2.0-0.dll!63a56438() Unknown
libgobject-2.0-0.dll!63a5dcd6() Unknown
KernelBase.dll!_WaitForMultipleObjectsEx@20()  Unknown
libgdk-win32-2.0-0.dll!6c34137c()   Unknown
libglib-2.0-0.dll!685f09eb()    Unknown
libglib-2.0-0.dll!685f1205()    Unknown
libglib-2.0-0.dll!685f13f5()    Unknown
user32.dll!__InternalCallWinProc@20()  Unknown
user32.dll!UserCallWinProcCheckWow()    Unknown
user32.dll!DispatchClientMessage()  Unknown
user32.dll!___fnDWORD@4()  Unknown
ntdll.dll!_KiUserCallbackDispatcher@12()   Unknown
user32.dll!RealDefWindowProcWorker()    Unknown
user32.dll!RealDefWindowProcW() Unknown
uxtheme.dll!DoMsgDefault(struct _THEME_MSG const *) Unknown
uxtheme.dll!OnDwpSysCommand()   Unknown
uxtheme.dll!_ThemeDefWindowProc()   Unknown
uxtheme.dll!_ThemeDefWindowProcW@16()  Unknown
user32.dll!DefWindowProcW() Unknown
libgdk-win32-2.0-0.dll!6c37db18()   Unknown
user32.dll!__InternalCallWinProc@20()  Unknown
user32.dll!UserCallWinProcCheckWow()    Unknown
user32.dll!DispatchClientMessage()  Unknown
user32.dll!___fnDWORD@4()  Unknown
ntdll.dll!_KiUserCallbackDispatcher@12()   Unknown
user32.dll!RealDefWindowProcWorker()    Unknown
user32.dll!RealDefWindowProcW() Unknown
uxtheme.dll!DoMsgDefault(struct _THEME_MSG const *) Unknown
uxtheme.dll!OnDwpNcLButtonDown()    Unknown
uxtheme.dll!_ThemeDefWindowProc()   Unknown
uxtheme.dll!_ThemeDefWindowProcW@16()  Unknown
user32.dll!DefWindowProcW() Unknown
libgdk-win32-2.0-0.dll!6c37db18()   Unknown
user32.dll!__InternalCallWinProc@20()  Unknown
user32.dll!UserCallWinProcCheckWow()    Unknown
user32.dll!DispatchMessageWorker()  Unknown
user32.dll!_DispatchMessageW@4()   Unknown
libgdk-win32-2.0-0.dll!6c37dbe4()   Unknown
libgdk-win32-2.0-0.dll!6c37dc16()   Unknown
libglib-2.0-0.dll!685f09eb()    Unknown
libglib-2.0-0.dll!685f1205()    Unknown
libglib-2.0-0.dll!685efb1c()    Unknown
libgtk-win32-2.0-0.dll!61857694()   Unknown
msvcr100.dll!_free()   Unknown
msvcr100.dll!_free()   Unknown
sigc-vc100-2_0.dll!00092516()   Unknown
gtkmm-vc100-2_4.dll!10045a4f()  Unknown
ConsoleApplication4.exe!main(int argc, char * * argv) Line 10   C++
ConsoleApplication4.exe!__tmainCRTStartup() Line 536    C
kernel32.dll!@BaseThreadInitThunk@12() Unknown
ntdll.dll!__RtlUserThreadStart()    Unknown
ntdll.dll!__RtlUserThreadStart@8() Unknown

所以我想知道有什么问题--因为它过去在另一个平台上运行时没有问题?

很好地寻求帮助。如果有人想看整个来源,并尝试它,我可以张贴它。

EN

回答 1

Stack Overflow用户

发布于 2015-03-09 16:31:10

您的问题是编译器版本,您需要使用Visual 2013从源代码编译新的gtkmm,然后重新构建应用程序。

第二个选择是安装旧版本的Visual,并重新构建应用程序和目标XP。

如果您决定使用Visual 2013编译最新的gtkmm (3.14),我编写了一个教程link1 link2来说明如何做到这一点。无论如何,在我的GitHub页面上,您还可以找到prebult gtkmm 3.14 for Visual 2013调试for x64

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28926004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档