On Tue, Oct 7, 2008 at 10:24 AM, Jonathon Jongsma
<jonathon quotidian org> wrote:
Mark Tilford wrote:
On Sun, Sep 28, 2008 at 7:43 PM, Jonathon Jongsma
<jonathon quotidian org> wrote:
Mark Tilford wrote:
On Sat, Sep 27, 2008 at 1:55 PM, Mark Tilford <ralphmerridew gmail com>
wrote:
Anybody ever figure out what caused this problem? I can't get the
clock example to work:
~/src/gtk/clock$ g++ `pkg-config --cflags --libs gtkmm-2.4`
`pkg-config --cflags --libs cairomm-1.0` -g clock.cc main.cc
~/src/gtk/clock$ ./a.out
./a.out: symbol lookup error: ./a.out: undefined symbol:
_ZN3Gdk8Drawable20create_cairo_contextEv
I found a workaround:
Instead of
m_cairo_context = widget.get_window()->create_cairo_context();
Use
m_cairo_context = Cairo::RefPtr<Cairo::Context>(new
Cairo::Context(gdk_cairo_create(widget.get_window()->gobj())));
In case anybody else runs into the same problem.
_______________________________________________
gtkmm-list mailing list
gtkmm-list gnome org
http://mail.gnome.org/mailman/listinfo/gtkmm-list
You're probably trying to link against a too-old version of gtkmm (?) I
believe the gdk_cairo_create() function was added in GTK+ 2.6, but it
wasn't
wrapped until the next release of gtkmm (due to the fact that cairomm
wasn't
yet stable in time for gtkmm-2.6)
* I might not have the version numbers exactly correct, but I know for
sure
that there was a 1-version gap between when cairo support was added to
GTK+
and when it was added to gtkmm.
--
jonner
Exactly which version do I have / which file do I need to upgrade?
(gtkmm numbering has me completely confused.)
ii libgtkmm-2.4-1c2a 1:2.12.5-2 C++
wrappers for GTK+ 2.4 (shared libraries)
ii libgtkmm-2.4-dev 1:2.12.5-2 C++
wrappers for GTK+ 2.4 (development files)
ii libgtkmm-2.4-doc 1:2.12.5-2 C++
wrappers for GTK+ 2.4 (documentation)
ii libcairomm-1.0-1 1.4.2-1 C++
wrappers for Cairo (shared libraries)
ii libcairomm-1.0-dev 1.4.2-1 C++
wrappers for Cairo (development files)
ii libcairomm-1.0-doc 1.4.2-1 C++
wrappers for Cairo (documentation)
Those versions should all be plenty new. I just double-checked and
create_cairo_context() was added in gtkmm 2.10 and you have 2.12 (you can be
more sure about what version you're linking against by running `pkg-config
--modversion gtkmm-2.4`)
btw, the second pkg-config invocation (the one for cairomm-1.0) is not
necessary since gtkmm will pull that in automatically.
Also, I just noticed that this error is not occurring at link time, but
instead at runtime. that seems very strange... maybe your environment is
broken and you need to set LD_LIBRARY_PATH or something?
$ echo "($LD_LIBRARY_PATH)"
()
$ ldd clock | grep cairo
libcairomm-1.0.so.1 => /usr/lib/libcairomm-1.0.so.1 (0xb7829000)
libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0xb77b7000)
libcairo.so.2 => /usr/lib/libcairo.so.2 (0xb7712000)
$ ls -l /usr/lib/*cairo*
-rw-r--r-- 1 root root 617510 2008-06-04 11:45 /usr/lib/libcairo.a
-rw-r--r-- 1 root root 875 2008-06-04 11:45 /usr/lib/libcairo.la
-rw-r--r-- 1 root root 126960 2007-10-23 14:50 /usr/lib/libcairomm-1.0.a
-rw-r--r-- 1 root root 924 2007-10-23 14:50 /usr/lib/libcairomm-1.0.la
lrwxrwxrwx 1 root root 23 2008-04-29 05:30
/usr/lib/libcairomm-1.0.so -> libcairomm-1.0.so.1.1.0
lrwxrwxrwx 1 root root 23 2008-04-29 05:30
/usr/lib/libcairomm-1.0.so.1 -> libcairomm-1.0.so.1.1.0
-rw-r--r-- 1 root root 103332 2007-10-23 14:50 /usr/lib/libcairomm-1.0.so.1.1.0
lrwxrwxrwx 1 root root 18 2008-07-05 21:49 /usr/lib/libcairo.so ->
libcairo.so.2.17.3
lrwxrwxrwx 1 root root 18 2008-07-05 21:49 /usr/lib/libcairo.so.2
-> libcairo.so.2.17.3
-rw-r--r-- 1 root root 396284 2008-06-04 11:45 /usr/lib/libcairo.so.2.17.3
-rw-r--r-- 1 root root 44602 2008-07-09 11:23 /usr/lib/libpangocairo-1.0.a
-rw-r--r-- 1 root root 846 2008-07-09 11:23 /usr/lib/libpangocairo-1.0.la
lrwxrwxrwx 1 root root 29 2008-07-19 22:00
/usr/lib/libpangocairo-1.0.so -> libpangocairo-1.0.so.0.2002.3
lrwxrwxrwx 1 root root 29 2008-07-19 22:00
/usr/lib/libpangocairo-1.0.so.0 -> libpangocairo-1.0.so.0.2002.3
-rw-r--r-- 1 root root 34904 2008-07-09 11:23
/usr/lib/libpangocairo-1.0.so.0.2002.3
$ ldd clock | grep gtkmm
libgtkmm-2.4.so.1 => /usr/local/lib/libgtkmm-2.4.so.1 (0xb7cac000)
$ ls -l /usr/local/lib/libgtkmm*
lrwxrwxrwx 1 root root 22 2007-11-14 13:02
/usr/local/lib/libgtkmm-2.4.so.1 -> libgtkmm-2.4.so.1.0.29
-rwxr-xr-x 1 root root 12550005 2006-08-06 06:27
/usr/local/lib/libgtkmm-2.4.so.1.0.29
$ locate libgtkmm | grep -v "/usr/share/doc" | grep -v "/var/lib/dpkg"
| xargs ls -lrd
-rw-r--r-- 1 root root 2130756 2008-02-27 13:04
/var/cache/apt/archives/libgtkmm-2.4-dev_1%3a2.12.5-2_i386.deb
-rw-r--r-- 1 root root 1107262 2008-02-27 13:04
/var/cache/apt/archives/libgtkmm-2.4-1c2a_1%3a2.12.5-2_i386.deb
-rwxr-xr-x 1 root root 12550005 2006-08-06 06:27
/usr/local/lib/libgtkmm-2.4.so.1.0.29
lrwxrwxrwx 1 root root 22 2007-11-14 13:02
/usr/local/lib/libgtkmm-2.4.so.1 -> libgtkmm-2.4.so.1.0.29
-rw-r--r-- 1 root root 3406504 2008-02-27 12:59
/usr/lib/libgtkmm-2.4.so.1.0.30
lrwxrwxrwx 1 root root 22 2008-09-27 12:53
/usr/lib/libgtkmm-2.4.so.1 -> libgtkmm-2.4.so.1.0.30
lrwxrwxrwx 1 root root 22 2008-09-27 12:53
/usr/lib/libgtkmm-2.4.so -> libgtkmm-2.4.so.1.0.30
-rw-r--r-- 1 root root 823 2008-02-27 12:58 /usr/lib/libgtkmm-2.4.la
-rw-r--r-- 1 root root 5288526 2008-02-27 12:58 /usr/lib/libgtkmm-2.4.a
$ dpkg-query -S libgtkmm-2.4.so.1.0.29
dpkg: *libgtkmm-2.4.so.1.0.29* not found.
$ dpkg-query -S libgtkmm-2.4.so.1.0.30
libgtkmm-2.4-1c2a: /usr/lib/libgtkmm-2.4.so.1.0.30
So, could having 1.0.29 and 1.0.30 be confusing it? Can I just delete
the 1.0.29 files, or do I need to do anything else?