mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-01 06:33:41 +02:00
Version 11, interface, binary age 0.
Thu Nov 22 13:14:18 2001 Owen Taylor <otaylor@redhat.com> * configure.in (GLIB_MICRO_VERSION): Version 11, interface, binary age 0. * NEWS: Updated. * tests/Makefile.am (libmoduletestplugin_[ab]_la_LDFLAGS): Add dummy -rpath argument. On some (but not all) platforms, libtool will only build a convenience library without this. (#63486, Dan Winship) * Makefile.am (EXTRA_DIST): Add README.in, INSTALL.in - autoconf-2.5x checks for 'make dist' in the tarball when you make distcheck. * glib/Makefile.am (EXTRA_DIST): Distribute makefile.msc/mingw.in, glib.rc.in. * tests/patterntest.c: Include string.h. * glib/gpattern.c (g_utf8_reverse): doc parsing fix.
This commit is contained in:
@@ -10,10 +10,6 @@ makefile.mingw
|
||||
_libs
|
||||
.libs
|
||||
so_locations
|
||||
libgmodule-1.3.la
|
||||
libgplugin_a.la
|
||||
libgplugin_b.la
|
||||
gmoduleconf.h
|
||||
stamp-h
|
||||
testgmodule
|
||||
gmodule.rc
|
||||
|
@@ -1,3 +1,9 @@
|
||||
Mon Nov 19 16:12:12 2001 Owen Taylor <otaylor@redhat.com>
|
||||
|
||||
* Makefile.am makefile.msc.in makefile.mingw.in: Remove
|
||||
testgmodule and associated plugin files; we don't need _both_ this
|
||||
and ../tests/module-test.c
|
||||
|
||||
2001-11-16 Michael Meeks <michael@ximian.com>
|
||||
|
||||
* gmodule.c (parse_libtool_archive): fix leak.
|
||||
|
@@ -34,7 +34,6 @@ libglib = $(top_builddir)/glib/libglib-1.3.la
|
||||
top_builddir_full=`cd \$(top_builddir); pwd`
|
||||
|
||||
lib_LTLIBRARIES = libgmodule-1.3.la
|
||||
noinst_LTLIBRARIES = libgplugin_a.la libgplugin_b.la
|
||||
|
||||
if MS_LIB_AVAILABLE
|
||||
noinst_DATA = gmodule-1.3.lib
|
||||
@@ -55,7 +54,6 @@ endif
|
||||
|
||||
if OS_WIN32
|
||||
export_symbols = -export-symbols gmodule.def
|
||||
plugin_rpath = -rpath `pwd`
|
||||
|
||||
install-libtool-import-lib:
|
||||
$(INSTALL) .libs/libgmodule-1.3.dll.a $(DESTDIR)$(libdir)
|
||||
@@ -76,19 +74,6 @@ libgmodule_1_3_la_LIBADD = @G_MODULE_WIN32_RESOURCE@ @G_MODULE_LIBS_EXTRA@ @G_MO
|
||||
|
||||
libgmodule_1_3_la_DEPENDENCIES = @G_MODULE_WIN32_RESOURCE@ @GMODULE_DEF@
|
||||
|
||||
libgplugin_a_la_SOURCES = libgplugin_a.c
|
||||
libgplugin_a_la_LDFLAGS = @G_MODULE_LDFLAGS@ -avoid-version -module $(no_undefined) $(plugin_rpath)
|
||||
libgplugin_a_la_LIBADD = @G_MODULE_LIBS@ @G_MODULE_LIBS_EXTRA@ @G_MODULE_PLUGIN_LIBS@ libgmodule-1.3.la $(libglib)
|
||||
|
||||
libgplugin_b_la_SOURCES = libgplugin_b.c
|
||||
libgplugin_b_la_LDFLAGS = @G_MODULE_LDFLAGS@ -avoid-version -module $(no_undefined) $(plugin_rpath)
|
||||
libgplugin_b_la_LIBADD = @G_MODULE_LIBS@ @G_MODULE_LIBS_EXTRA@ @G_MODULE_PLUGIN_LIBS@ libgmodule-1.3.la $(libglib)
|
||||
|
||||
noinst_PROGRAMS = testgmodule
|
||||
testgmodule_LDFLAGS += @G_MODULE_LDFLAGS@
|
||||
testgmodule_LDADD = @TESTGMODULE_EXP@ libgmodule-1.3.la $(libglib) @G_MODULE_LIBS@
|
||||
testgmodule_DEPENDENCIES = @TESTGMODULE_EXP@
|
||||
|
||||
if OS_WIN32
|
||||
@G_MODULE_WIN32_RESOURCE@ : gmodule.rc
|
||||
$(top_srcdir)/build/win32/lt-compile-resource gmodule.rc @G_MODULE_WIN32_RESOURCE@
|
||||
|
@@ -1,73 +0,0 @@
|
||||
/* libgplugin_a.c - test plugin for testgmodule
|
||||
* Copyright (C) 1998 Tim Janik
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Modified by the GLib Team and others 1997-2000. See the AUTHORS
|
||||
* file for a list of people on the GLib Team. See the ChangeLog
|
||||
* files for a list of changes. These files are distributed with
|
||||
* GLib at ftp://ftp.gtk.org/pub/gtk/.
|
||||
*/
|
||||
|
||||
#include <gmodule.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
gplugin_a_func (void)
|
||||
{
|
||||
g_print ("GPluginA: Hello world\n");
|
||||
}
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
gplugin_clash_func (void)
|
||||
{
|
||||
g_print ("GPluginA: Hello plugin clash\n");
|
||||
}
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
g_clash_func (void)
|
||||
{
|
||||
g_print ("GPluginA: Hello global clash\n");
|
||||
}
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
gplugin_say_boo_func (void)
|
||||
{
|
||||
g_print ("GPluginA: BOOH!\n");
|
||||
}
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
gplugin_a_module_func (GModule *module)
|
||||
{
|
||||
void (*f) (void) = NULL;
|
||||
gchar *string;
|
||||
gchar *basename = g_path_get_basename (g_module_name (module));
|
||||
|
||||
string = "gplugin_say_boo_func";
|
||||
g_print ("GPluginA: retrieve symbol `%s' from \"%s\"\n",
|
||||
string, basename);
|
||||
g_free (basename);
|
||||
if (!g_module_symbol (module, string, (gpointer) &f))
|
||||
{
|
||||
g_print ("error: %s\n", g_module_error ());
|
||||
exit (1);
|
||||
}
|
||||
|
||||
g_print ("GPluginA: call that function(%p): ", f);
|
||||
f ();
|
||||
}
|
@@ -1,65 +0,0 @@
|
||||
/* libgplugin_b.c - test plugin for testgmodule
|
||||
* Copyright (C) 1998 Tim Janik
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Modified by the GLib Team and others 1997-2000. See the AUTHORS
|
||||
* file for a list of people on the GLib Team. See the ChangeLog
|
||||
* files for a list of changes. These files are distributed with
|
||||
* GLib at ftp://ftp.gtk.org/pub/gtk/.
|
||||
*/
|
||||
|
||||
#include <gmodule.h>
|
||||
|
||||
G_MODULE_EXPORT const gchar*
|
||||
g_module_check_init (GModule *module)
|
||||
{
|
||||
g_print ("GPluginB: check-init\n");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
g_module_unload (GModule *module)
|
||||
{
|
||||
g_print ("GPluginB: unloaded\n");
|
||||
}
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
gplugin_b_func (void)
|
||||
{
|
||||
g_print ("GPluginB: Hello world\n");
|
||||
}
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
gplugin_clash_func (void)
|
||||
{
|
||||
g_print ("GPluginB: Hello plugin clash\n");
|
||||
}
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
g_clash_func (void)
|
||||
{
|
||||
g_print ("GPluginB: Hello global clash\n");
|
||||
}
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
gplugin_say_boo_func (void)
|
||||
{
|
||||
g_print ("GPluginB: BOOH!\n");
|
||||
}
|
@@ -16,9 +16,7 @@ DEFINES = -DHAVE_CONFIG_H -DG_LOG_DOMAIN=\"GModule\" -DG_ENABLE_DEBUG
|
||||
|
||||
all : \
|
||||
gmoduleconf.h \
|
||||
libgmodule-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@.a \
|
||||
testgmodule.exe \
|
||||
libgplugin_a.dll libgplugin_b.dll
|
||||
libgmodule-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@.a
|
||||
|
||||
gmodule_OBJECTS = \
|
||||
gmodule.o
|
||||
@@ -34,20 +32,6 @@ libgmodule-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@.a : $(gmodule_OBJECTS) gmod
|
||||
gmodule-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@.rc : gmodule.rc
|
||||
cp $< $@
|
||||
|
||||
################ test prog
|
||||
|
||||
testgmodule.exe : libgmodule-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@.a testgmodule.o
|
||||
# We have to generate an .exp file separately with dlltool, and link
|
||||
# with that. Sigh.
|
||||
dlltool --output-exp testgmodule.exp testgmodule.o
|
||||
$(CC) $(CFLAGS) -o testgmodule.exe testgmodule.o testgmodule.exp -L ../glib -lglib-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@ -L . -lgmodule-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@ $(LFLAGS)
|
||||
|
||||
libgplugin_a.dll : libgplugin_a.o
|
||||
$(BUILD_DLL) libgplugin_a - libgplugin_a.o -L ../glib -lglib-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@ -L . -lgmodule-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@
|
||||
|
||||
libgplugin_b.dll : libgplugin_b.o
|
||||
$(BUILD_DLL) libgplugin_b - libgplugin_b.o -L ../glib -lglib-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@ -L . -lgmodule-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@
|
||||
|
||||
################ Other stuff
|
||||
|
||||
clean::
|
||||
|
@@ -12,8 +12,7 @@ DEFINES = -DHAVE_CONFIG_H -DG_LOG_DOMAIN=\"GModule\"
|
||||
|
||||
all : \
|
||||
gmoduleconf.h \
|
||||
libgmodule-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@-@LT_CURRENT_MINUS_AGE@.dll \
|
||||
testgmodule.exe
|
||||
libgmodule-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@-@LT_CURRENT_MINUS_AGE@.dll
|
||||
|
||||
gmodule_OBJECTS = \
|
||||
gmodule.obj
|
||||
@@ -25,19 +24,5 @@ libgmodule-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@-@LT_CURRENT_MINUS_AGE@.dll
|
||||
$(CC) $(CFLAGS) -LD -Fe$@ $(gmodule_OBJECTS) \
|
||||
..\glib\glib-$(GLIB_VER).lib $(LDFLAGS) /implib:gmodule-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@.lib /def:gmodule.def
|
||||
|
||||
################ test prog
|
||||
|
||||
testgmodule.exe : libgmodule-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@-@LT_CURRENT_MINUS_AGE@.dll testgmodule.obj libgplugin_a.dll libgplugin_b.dll
|
||||
$(CC) $(CFLAGS) testgmodule.obj gmodule-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@.lib \
|
||||
..\glib\glib-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@.lib $(LDFLAGS) /subsystem:console
|
||||
|
||||
libgplugin_a.dll : libgplugin_a.obj
|
||||
$(CC) $(CFLAGS) -LD libgplugin_a.obj gmodule-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@.lib \
|
||||
..\glib\glib-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@.lib $(LDFLAGS)
|
||||
|
||||
libgplugin_b.dll : libgplugin_b.obj
|
||||
$(CC) $(CFLAGS) -LD libgplugin_b.obj gmodule-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@.lib \
|
||||
..\glib\glib-@GLIB_MAJOR_VERSION@.@GLIB_MINOR_VERSION@.lib $(LDFLAGS)
|
||||
|
||||
clean::
|
||||
del gmoduleconf.h
|
||||
|
@@ -1,221 +0,0 @@
|
||||
/* testgmodule.c - test program for GMODULE
|
||||
* Copyright (C) 1998 Tim Janik
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Modified by the GLib Team and others 1997-2000. See the AUTHORS
|
||||
* file for a list of people on the GLib Team. See the ChangeLog
|
||||
* files for a list of changes. These files are distributed with
|
||||
* GLib at ftp://ftp.gtk.org/pub/gtk/.
|
||||
*/
|
||||
|
||||
#undef G_LOG_DOMAIN
|
||||
#include <gmodule.h>
|
||||
#include "gmoduleconf.h"
|
||||
|
||||
|
||||
G_MODULE_EXPORT void
|
||||
g_clash_func (void)
|
||||
{
|
||||
g_print ("GModule: Hello global clash\n");
|
||||
}
|
||||
|
||||
typedef void (*SimpleFunc) (void);
|
||||
typedef void (*GModuleFunc) (GModule *);
|
||||
|
||||
static SimpleFunc plugin_clash_func = NULL;
|
||||
|
||||
int
|
||||
main (int arg,
|
||||
char *argv[])
|
||||
{
|
||||
GModule *module_self, *module_a, *module_b;
|
||||
gchar *string;
|
||||
gchar *basename;
|
||||
gchar *plugin_a, *plugin_b;
|
||||
SimpleFunc f_a, f_b, f_self;
|
||||
GModuleFunc gmod_f;
|
||||
|
||||
string = g_get_current_dir ();
|
||||
g_print ("testgmodule (%s):\n", string);
|
||||
|
||||
plugin_a = g_strconcat (string, G_DIR_SEPARATOR_S "libgplugin_a", NULL);
|
||||
plugin_b = g_strconcat (string, G_DIR_SEPARATOR_S "libgplugin_b", NULL);
|
||||
|
||||
g_free (string);
|
||||
|
||||
/* module handles
|
||||
*/
|
||||
g_print ("get main module handle\n");
|
||||
module_self = g_module_open (NULL, G_MODULE_BIND_LAZY);
|
||||
if (!module_self)
|
||||
{
|
||||
g_print ("error: %s\n", g_module_error ());
|
||||
return 1;
|
||||
}
|
||||
g_print ("check that not yet bound symbols in shared libraries of main module are retrievable:\n");
|
||||
string = "g_module_close";
|
||||
basename = g_path_get_basename (g_module_name (module_self));
|
||||
g_print ("retrieve symbol `%s' from \"%s\":\n", string, basename);
|
||||
g_free (basename);
|
||||
if (!g_module_symbol (module_self, string, (gpointer) &f_self))
|
||||
{
|
||||
g_print ("error: %s\n", g_module_error ());
|
||||
return 1;
|
||||
}
|
||||
g_print ("retrieved symbol `%s' as %p\n", string, f_self);
|
||||
g_print ("load plugin from \"%s\"\n", plugin_a);
|
||||
module_a = g_module_open (plugin_a, G_MODULE_BIND_LAZY);
|
||||
if (!module_a)
|
||||
{
|
||||
g_print ("error: %s\n", g_module_error ());
|
||||
return 1;
|
||||
}
|
||||
g_print ("load plugin from \"%s\"\n", plugin_b);
|
||||
module_b = g_module_open (plugin_b, G_MODULE_BIND_LAZY);
|
||||
if (!module_b)
|
||||
{
|
||||
g_print ("error: %s\n", g_module_error ());
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* get plugin specific symbols and call them
|
||||
*/
|
||||
string = "gplugin_a_func";
|
||||
basename = g_path_get_basename (g_module_name (module_a));
|
||||
g_print ("retrieve symbol `%s' from \"%s\"\n", string, basename);
|
||||
g_free (basename);
|
||||
if (!g_module_symbol (module_a, string, (gpointer) &f_a))
|
||||
{
|
||||
g_print ("error: %s\n", g_module_error ());
|
||||
return 1;
|
||||
}
|
||||
string = "gplugin_b_func";
|
||||
basename = g_path_get_basename (g_module_name (module_b));
|
||||
g_print ("retrieve symbol `%s' from \"%s\"\n", string, basename);
|
||||
g_free (basename);
|
||||
if (!g_module_symbol (module_b, string, (gpointer) &f_b))
|
||||
{
|
||||
g_print ("error: %s\n", g_module_error ());
|
||||
return 1;
|
||||
}
|
||||
g_print ("call plugin function(%p) A: ", f_a);
|
||||
f_a ();
|
||||
g_print ("call plugin function(%p) B: ", f_b);
|
||||
f_b ();
|
||||
|
||||
/* get and call globally clashing functions
|
||||
*/
|
||||
string = "g_clash_func";
|
||||
basename = g_path_get_basename (g_module_name (module_self));
|
||||
g_print ("retrieve symbol `%s' from \"%s\"\n", string, basename);
|
||||
g_free (basename);
|
||||
if (!g_module_symbol (module_self, string, (gpointer) &f_self))
|
||||
{
|
||||
g_print ("error: %s\n", g_module_error ());
|
||||
return 1;
|
||||
}
|
||||
basename = g_path_get_basename (g_module_name (module_a));
|
||||
g_print ("retrieve symbol `%s' from \"%s\"\n", string, basename);
|
||||
g_free (basename);
|
||||
if (!g_module_symbol (module_a, string, (gpointer) &f_a))
|
||||
{
|
||||
g_print ("error: %s\n", g_module_error ());
|
||||
return 1;
|
||||
}
|
||||
basename = g_path_get_basename (g_module_name (module_b));
|
||||
g_print ("retrieve symbol `%s' from \"%s\"\n", string, basename);
|
||||
g_free (basename);
|
||||
if (!g_module_symbol (module_b, string, (gpointer) &f_b))
|
||||
{
|
||||
g_print ("error: %s\n", g_module_error ());
|
||||
return 1;
|
||||
}
|
||||
g_print ("call plugin function(%p) self: ", f_self);
|
||||
f_self ();
|
||||
g_print ("call plugin function(%p) A: ", f_a);
|
||||
f_a ();
|
||||
g_print ("call plugin function(%p) B: ", f_b);
|
||||
f_b ();
|
||||
|
||||
/* get and call clashing plugin functions
|
||||
*/
|
||||
string = "gplugin_clash_func";
|
||||
basename = g_path_get_basename (g_module_name (module_self));
|
||||
g_print ("retrieve symbol `%s' from \"%s\"\n", string, basename);
|
||||
g_free (basename);
|
||||
if (!g_module_symbol (module_self, string, (gpointer) &f_self))
|
||||
f_self = NULL;
|
||||
g_print ("retrieved function `%s' from self: %p\n", string, f_self);
|
||||
basename = g_path_get_basename (g_module_name (module_a));
|
||||
g_print ("retrieve symbol `%s' from \"%s\"\n", string, basename);
|
||||
g_free (basename);
|
||||
if (!g_module_symbol (module_a, string, (gpointer) &f_a))
|
||||
{
|
||||
g_print ("error: %s\n", g_module_error ());
|
||||
return 1;
|
||||
}
|
||||
basename = g_path_get_basename (g_module_name (module_b));
|
||||
g_print ("retrieve symbol `%s' from \"%s\"\n", string, basename);
|
||||
g_free (basename);
|
||||
if (!g_module_symbol (module_b, string, (gpointer) &f_b))
|
||||
{
|
||||
g_print ("error: %s\n", g_module_error ());
|
||||
return 1;
|
||||
}
|
||||
g_print ("call plugin function(%p) A: ", f_a);
|
||||
plugin_clash_func = f_a;
|
||||
plugin_clash_func ();
|
||||
g_print ("call plugin function(%p) B: ", f_b);
|
||||
plugin_clash_func = f_b;
|
||||
plugin_clash_func ();
|
||||
|
||||
/* call gmodule function form A
|
||||
*/
|
||||
string = "gplugin_a_module_func";
|
||||
basename = g_path_get_basename (g_module_name (module_a));
|
||||
g_print ("retrieve symbol `%s' from \"%s\"\n", string, basename);
|
||||
g_free (basename);
|
||||
if (!g_module_symbol (module_a, string, (gpointer) &gmod_f))
|
||||
{
|
||||
g_print ("error: %s\n", g_module_error ());
|
||||
return 1;
|
||||
}
|
||||
g_print ("call plugin A's module function(%p):\n{\n", gmod_f);
|
||||
gmod_f (module_b);
|
||||
g_print ("}\n");
|
||||
|
||||
|
||||
/* unload plugins
|
||||
*/
|
||||
g_print ("unload plugin A:\n");
|
||||
if (!g_module_close (module_a))
|
||||
g_print ("error: %s\n", g_module_error ());
|
||||
g_print ("unload plugin B:\n");
|
||||
if (!g_module_close (module_b))
|
||||
g_print ("error: %s\n", g_module_error ());
|
||||
|
||||
#if 0
|
||||
g_log_set_fatal_mask ("GModule", G_LOG_FATAL_MASK|G_LOG_LEVEL_WARNING);
|
||||
g_module_symbol (0, 0, 0);
|
||||
g_warning("jahooo");
|
||||
g_on_error_query (".libs/testgmodule");
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user