Gtk-ERROR **: GTK+ 2.x symbols detected

19,810

Solution 1

You are linking the same program to Gtk+2.0 and Gtk+3.0. And that will not work.

It is easy to check: just run the pkg-config command standalone. BTW, you do not need to repeat --libs so many times, and since we are looking for linking errors, I'm ommiting the --cflags for clarity:

$ pkg-config --libs gtk+-2.0 clutter-gtk-1.0 gthread-2.0

Now, it writes a lot of library names, but if you look carefully you'll find these ones:

... -lgtk-x11-2.0 ... -lgtk-3 ...

But where do they come from? Well, the Gtk+-2 part is easy: you are asking for it in the command line! The Gtk+-3 part has only one candidate:

$ pkg-config --libs clutter-gtk-1.0
... -lgtk-3 ...

Bingo! So Clutter-gtk is a Gtk+-3 library. And so should be your program is you want to use Clutter-gtk.

The solutions to your problem are:

  • Port your program to Gtk+-3 and change your compiler command accordingly.
  • Use a different version of Clutter-gtk that uses Gtk+-2. I think you can choose the dependency if you compile Clutter-gtk yourself.
  • Do not use Clutter-gtk.

Solution 2

I had the same issue while using matplotlib package in python. The below code solved the issue for me

import matplotlib
matplotlib.use('Agg')
Share:
19,810
ReX357
Author by

ReX357

Hobbyist programmer. If you can program it, I'm gonna figure out how. Might take me forever but I'll get it done.

Updated on June 17, 2022

Comments

  • ReX357
    ReX357 almost 2 years

    I'm compiling my c application with gcc with the following flags:

    gcc evis.c `pkg-config --cflags --libs gtk+-2.0 --libs clutter-gtk-1.0 --libs gthread-2.0` -Wall -o evis
    

    Now my code compiles with a few warnings but still finishes. When I try to run my program I get:

    (evis:1820): Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in the same process is not supported
    

    How do I troubleshoot this error? How do I know where to look? Is there some kind of tool I could use online that would scan for GTK3 symbols in my code? I'm compiling with GTK+2 so I don't understand how this is happening.

  • ReX357
    ReX357 over 10 years
    Thank you. I like how you took the time to break down how to get to that conclusion. I'm going to bed a little less dumb tonight.