Hello世界程序在gtkmm中崩溃

时间:2012-07-11 20:57:36

标签: c++ windows-7 mingw gtkmm

我正在尝试使用MinGW在Windows 7上运行gtkmm。但是,当我从gtkmm-tutorial编译hello world程序之后,exe只会因为段错而崩溃。

我用这个编译了程序:

$ g++ helloworld.cc main.cc -o hw `pkg-config --cflags --libs gtkmm-2.4`

这是gdb显示的内容:

$ gdb hw.exe
GNU gdb (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "mingw32".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from c:\dev/hw.exe...done.
(gdb) run
Starting program: c:\dev/hw.exe
[New Thread 4348.0x1560]
[New Thread 4348.0x1430]

Program received signal SIGSEGV, Segmentation fault.
0x664d85b2 in Glib::ObjectBase::ObjectBase (this=0x47453c, __vtt_parm=0x1,
    __in_chrg=<value optimized out>) at objectbase.cc:49
49      objectbase.cc: No such file or directory.

我有点新手,所以我不知道怎么让它上班。

我从here(2.22版本)和g ++版本下载了gtkmm:

$ g++ -v
Using built-in specs.
COLLECT_GCC=c:\Mingw\bin\g++.exe
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/i686-pc-mingw32/4.7.1/lto-wrappe
r.exe
Target: i686-pc-mingw32
Configured with: ../src/configure --prefix=/c/temp/gcc/dest --with-gmp=/c/temp/g
cc/gmp --with-mpfr=/c/temp/gcc/mpfr --with-mpc=/c/temp/gcc/mpc --enable-language
s=c,c++ --with-arch=i686 --with-tune=generic --disable-libstdcxx-pch --disable-n
ls --disable-shared --disable-sjlj-exceptions --disable-win32-registry --enable-
checking=release --enable-lto
Thread model: win32
gcc version 4.7.1 (GCC)

我还需要更多东西吗?或者我只是做错了?

1 个答案:

答案 0 :(得分:2)

似乎是MinGW made an ABI change with GCC 4.7.0。如果你的gtkmm是用早期的GCC编译的,那么这会引起你所看到的问题。尝试使用相同的编译器重建gtkmm。