On Thu, 2005-03-24 at 07:50 -0500, muppet wrote:
GtkMozEmbed.c:557: error: invalid conversion from `gint' to ` GtkMozEmbedReloadFlags'.../* * * * line 557 is next * * * */ GtkMozEmbedReloadFlags flags = SvGtkMozEmbedReloadFlags (ST(1));did you add GtkMozEmbedReloadFlags to a maps file? if so (and your project is properly set up, which i assume it is), the #define for this macro will be in build/whatever-autogen.h, protected by #ifdef on the TYPE macro. e.g.
Gtk2::MozEmbed registers custom GTypes for the enums and the flags. But the problem is that the type macros:
#if FOO_TYPE_BAR # define SvFooBar(...) ... # define newSVFooBar(..) ... #endif
are defined to directly call gperl_convert_(enum|flags) which return a gint or a guint32. It looks like C++ is stricter about the enum <-> int distinction and thus says that the assignment above is an error. If you change CodeGen.pm to cast the value to the proper enum/flags type, it works. Patch attached. So, compilation now works. But this just reveals another problem that occurs when the document generators try to do their work: /usr/bin/perl5.8.6: symbol lookup error: blib/arch/auto/Gtk2/MozEmbed/MozEmbed.so: undefined symbol: _Z21gperl_register_objectmPKc I've no idea what this is about. Does the C++ linker need Glib.so to be linked in explicitly? And what about this weird symbol name? Glib doesn't define it. Do you need to compile every module with c++ to make it work? -- Bye, -Torsten
Attachment:
codegen.patch
Description: Text Data