Re: gstreamermm header problem



Am Freitag, den 15.05.2009, 10:26 -0400 schrieb José Alburquerque:
> On Fri, 2009-05-15 at 16:16 +0200, Dirk Vanden Boer wrote:
> > Hi,
> > 
> > I wanted to start using gstreamermm in my project today but ran into a
> > problem with an include file.
> > 
> > taglist.h contains this line (196)
> > const Glib::ustring VERSION = GST_TAG_VERSION;

Automake normally defines the macros PACKAGE and VERSION in the
configuration header.  You can avoid that by adding the option
"no-define" to AM_INIT_AUTOMAKE().  However, gstreamermm should not
define something with a name that has such a high probability of
clashing.

> I don't understand how that constant could be causing a problem since it
> is declared in a namespace, namely "Tag".

VERSION is a macro, so it's not namespaced.

Also, objects that need a constructor to run should not be defined in
header files, with some rare exceptions.  Not to mention that the
definition should have gone into the source file rather than the header,
as a Glib::ustring is no longer a simple value constant.

I think these constants should probably be mapped to enums, and the
corresponding name strings looked up when doing the conversion from C++
to C argument types.

--Daniel




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]