On Fri, Apr 23, 2010 at 4:40 AM, dfg dfg <abx...@msn.com> wrote:
> Hi Tristan,
>
> I am not sure if the symbols need to be visible in "myapp". Currently, myapp
> attaches a glade file to create its interface and uses dlopen to open the
> .so dynamic library. The .so library loads its own GTK Builder which loads a
> second glade file and attaches it to a container in myapp's glade file.

Your app has callbacks that need to be looked up by GtkBuilder.

Your plugin has also callbacks that need to be looked up by GtkBuilder

The fact you have a plugin and an app is completely besides the point.

You need to expose the symbols in your  *_app_*  so that GtkBuider can
read those symbols from the global namespace... of your app... to load
callbacks in your glade file that can only be found in your *app*, which
needs to be compiled with --export-dynamic ... did you try that yet before
writing back to the list please ?

Thanks,
    -Tristan


>
> At present state, the callbacks in the .so library are not being found by
> the GTK Builder loaded by the dynamic library.
> However, callbacks contained in "myapp" works perfectly with the glade file
> loaded by myapp.
>
> I am quite new at this, so can you please explain what you mean by "export
> the symbols of my app"?
>
> Cheers :)
>
>> Date: Thu, 22 Apr 2010 22:08:44 -0400
>> Subject: Re: Callbacks when glade file is loaded using a dynamic library
>> From: t...@gnome.org
>> To: abx...@msn.com
>> CC: gtk-app-devel-list@gnome.org
>>
>> If you have symbols that need to be visible in 'myapp', they need to be
>> exported to in order to by found by a g_module_lookup(); did you also
>> export the symbols of you app ?
>>
>> Cheers,
>> -Tristan
>>
>> On Thu, Apr 22, 2010 at 9:53 PM, dfg dfg <abx...@msn.com> wrote:
>> > Thank you Tristan.
>> >
>> > I actually tried the --export-dynamic flag before posting, but could not
>> > get
>> > it to work. I feel that it is most likely a problem in my makefile.am (I
>> > am
>> > using automake and libtool to generate the makefiles).
>> >
>> > Here is the make file for the compilation of the dynamic library:
>> >
>> > libmyplugin= /
>> > libmyplugin_LTLIBRARIES=libmyplugin.la
>> > libmyplugin_la_SOURCES=libmyplugin.c libmyplugincallbacks.c
>> > include_HEADERS = libmyplugincallbacks.h
>> > libmyplugin_la_LDFLAGS= -lc -lgcc -avoid-version @PACKAGE_LDFLAGS@
>> > libmyplugin_la_LIBDADD = --export-dynamic @PACKAGE_LIBS@
>> > INCLUDES = @PACKAGE_CFLAGS@
>> >
>> > Here is my configure.ac
>> >
>> > AC_PREREQ(2.59)
>> > AC_INIT(myapp, 1.0)
>> > PKG_CHECK_MODULES(GTK, gtk+-2.0 gmodule-2.0 gmodule-export-2.0)
>> > PACKAGE_CFLAGS="-g -Wall $GTK_CFLAGS"
>> > PACKAGE_LIBS="-g $GTK_LIBS -ltar"
>> > PACKAGE_LDFLAGS="-Wl, --export-dynamic $GTK_LDFLAGS"
>> > AC_SUBST(PACKAGE_CFLAGS)
>> > AC_SUBST(PACKAGE_LIBS)
>> > AC_SUBST(PACKAGE_LDFLAGS)
>> > AM_PROG_LIBTOOL
>> > AC_CANONICAL_SYSTEM
>> > AM_INIT_AUTOMAKE()
>> > AC_PROG_CC
>> > AC_CONFIG_FILES(Makefile src/Makefile src/modules/Makefile
>> > src/modules/libmyplugin/Makefile)
>> > AC_OUTPUT
>> >
>> > For some reason though, callbacks in "myapp" the main app that loads in
>> > the
>> > .so files work fine. Any ideas appreciated. :)
>> >
>> >
>> >
>> >> Date: Thu, 22 Apr 2010 21:37:48 -0400
>> >> Subject: Re: Callbacks when glade file is loaded using a dynamic
>> >> library
>> >> From: t...@gnome.org
>> >> To: abx...@msn.com
>> >> CC: gtk-app-devel-list@gnome.org
>> >>
>> >> On Thu, Apr 22, 2010 at 7:21 PM, dfg dfg <abx...@msn.com> wrote:
>> >> >
>> >> > Hi everyone,
>> >> >
>> >> > Currently, I have built my main application using glade. This file is
>> >> > then loaded by a C application.
>> >> >
>> >> > I then created another interface using Glade. When my main
>> >> > application
>> >> > loads, it loads a .so library which contains code for this subsection
>> >> > (kind
>> >> > of like a plugin).
>> >> >
>> >> > The .so file loads in the second glade file and attaches it into the
>> >> > interface of the main application. This all works problem.
>> >> >
>> >> > The problem I am facing now is that gtk_builder_connect_signals
>> >> > (builder, NULL); does not work.
>> >> >
>> >> > For my .so file, i have 3 files:
>> >> >
>> >> >   -libmyplugin.c
>> >> >   -libmyplugincallbacks.h
>> >> >   -libmyplugincallbacks.c
>> >> >
>> >> >
>> >> > My code for the libmyplugin.c file looks like this:
>> >> >
>> >> >   #include <stdlib.h>
>> >> >   #include <gtk/gtk.h>
>> >> >   #include "libmyplugincallbacks.h"
>> >> >
>> >> >   #define GUI "libmyplugingui.ui"
>> >> >   int startplugin(){
>> >> >      extern *mainBuilder;
>> >> >      GtkBuilder *subbuilder;
>> >> >
>> >> >      //Do things like attach the glade file into the main glade file.
>> >> >      gtk_builder_connect_signals (builder, NULL);
>> >> >
>> >> >   }
>> >> >
>> >> >
>> >> >
>> >> > My libmyplugincallbacks.h
>> >> >
>> >> >   #include <gtk/gtk.h>
>> >> >
>> >> >   void myfunc (GtkCellRenderer *cell, GtkCellEditable *editable,
>> >> > const
>> >> > gchar *path, gpointer data);
>> >> >
>> >> >
>> >> >
>> >> > My libplugincallbacks.c
>> >> >
>> >> >   #ifdef HAVE_CONFIG_H
>> >> >   #  include <config.h>
>> >> >   #endif
>> >> >
>> >> >   #include "libmyplugincallbacks.h"
>> >> >   #include <string.h>
>> >> >
>> >> >   void myfunc(GtkCellRenderer *cell, GtkCellEditable *editable, const
>> >> > gchar *path, gpointer data){
>> >> >     if (GTK_IS_ENTRY (editable))
>> >> >       {
>> >> >       //Do stuff
>> >> >       }
>> >> >   }
>> >> >
>> >> >
>> >> >
>> >> > When I compile my program, the .so file compiles properly. However,
>> >> > when
>> >> > ever I run the program, it loads the .so file. Once GTK builder gets
>> >> > to the
>> >> > stage where it connects the signals, it will complain that "myfunc"
>> >> > cannot
>> >> > be found. I have double checked the name of the function in my glade
>> >> > file
>> >> > and it is spelt and entered correctly.
>> >>
>> >> You generally need to export your symbols by linking the app with
>> >> --export-dynamic flag:
>> >>
>> >> pkg-config --libs gmodule-2.0
>> >>
>> >> Should do the right thing to make your symbols visible.
>> >>
>> >> Cheers,
>> >> -Tristan
>> >
>> > ________________________________
>> > Hotmail & Messenger. Get them on your phone now.
>
> ________________________________
> Hotmail & Messenger. Get them on your phone now.
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to