[gst-devel] Win32/Perl Bindings/gstreamer-0.10.pc
Jeffrey Ray
jeffrey at jeffreyray.info
Mon Dec 14 03:51:00 CET 2009
Andoni Morales wrote:
> Hi,
> In the beginning GStreamer Winbuilds was intended to be used with VS,
> and for this reason we were only including the import libraries, but
> we are working to improve the integration with mingw so other FFOS
> projects can take benefit of it. The objective was to provide a simple
> way for windows developers to work with GStreamer without having to
> worry about all the external dependencies and be able to compile
> GStreamer with a simple click, in the Windows way :p
> Las week I was able to build all the gstreamer modules with mingw, but
> if you only need to build the bindings without having to compile
> everything you can just modify the pkgconfig files that comes in the
> gstreamer sources[0] and changes the @prefix@, @libdir@, etc.. values
> to your installation path (which should be c:\gstreamer,
> c:\gstreamer\lib, etc..).
> The current installer doesn't update the prefix of the pkgconfig files
> and those files point to wrong dirs, but we have for that a set a
> templates[1]. So you will need to replace @SHARED_BUILD_DIR@ with
> c:\gstreamer with sed for example. Doing these steps you should be
> able to build the bindings.
> Regarding the compatibility between the GStreamer binaries built using
> MSVC and other binaries built using GCC, you don't have to fear
> anything. Even if the binaries are built using MSVC, they are linked
> against the old crt, msvcrt.dll, and not the 9.0 crt, which is the one
> used by mingw. In fact, all the external dependencies like glib,
> pango, cairo, etc.. are built with gcc while the gstreamer binaries
> are built with MSVC.
> As I said we are working hard to do everything in the Linux way, and
> in the next release we will try to include all the files needed to
> build projects depending on GStreamer using mingw.
> Cheers,
> Andoni
>
>
> [0]http://cgit.freedesktop.org/gstreamer/gstreamer/tree/pkgconfig
> [1]http://code.google.com/p/ossbuild/source/browse/trunk/Shared/Build/Windows/Win32/templates/
>
>
>
Hey, thanks a lot - that was very helpful and informative. I followed
your instructions which i believe were:
- acquire files from source[0] and edit @vars at .
- acquire files from source[1] and replace @SHARED_BUILD_DIR@ with
C:\gstreamer
- rename all files above to remove .in
now when I attempt to build the Perl bindings, i get the output below.
C:\gsperl>perl
Makefile.PL
Including generated API
documentation...
WARNING: META_MERGE is not a known
parameter.
'META_MERGE' is not a known MakeMaker parameter
name.
Note (probably harmless): No library found for
-lgstreamer-0.10
Note (probably harmless): No library found for
-lxml2
Note (probably harmless): No library found for
-lgobject-2.0
Note (probably harmless): No library found for
-lglib-2.0
Note (probably harmless): No library found for
-lgthread-2.0
Writing Makefile for
GStreamer
C:\gsperl>dmake
Skip blib\lib/GStreamer.pm
(unchanged)
Skip blib\arch/GStreamer/Install/gst2perl.h
(unchanged)
cp build/IFiles.pm
blib\arch/GStreamer/Install/Files.pm
Skip blib\arch/GStreamer/Install/gst2perl.typemap
(unchanged)
Skip blib\arch/GStreamer/Install/doctypes
(unchanged)
Skip blib\arch/GStreamer/Install/gst2perl-autogen.h
(unchanged)
Skip blib\arch/GStreamer/Install/gst.typemap
(unchanged)
Skip blib\arch/GStreamer/Install/gst2perl-version.h
(unchanged)
[ XS xs\Gst.xs
]
[ CC xs\Gst.c
]
[ XS xs\GstBin.xs
]
[ CC xs\GstBin.c
]
[ XS xs\GstBuffer.xs
]
[ CC xs\GstBuffer.c
]
[ XS xs\GstBus.xs
]
[ CC xs\GstBus.c
]
[ XS xs\GstCaps.xs
]
[ CC xs\GstCaps.c ]
.
.
.
.
[ CC xs\GstTag.c
]
[ XS xs\GstTagSetter.xs
]
[ CC xs\GstTagSetter.c
]
[ XS xs\GstTypeFindFactory.xs
]
[ CC xs\GstTypeFindFactory.c
]
[ XS xs\GstValue.xs
]
[ CC xs\GstValue.c
]
Running Mkbootstrap for GStreamer
()
C:\camelbox\bin\perl.exe -MExtUtils::Command -e chmod 644
GStreamer.bs
dlltool --def GStreamer.def --output-exp
dll.exp
[ LD blib\arch\auto\GStreamer\GStreamer.dll
]
xs/Gst.o:Gst.c:(.text+0x47c): undefined reference to
`gst_version'
xs/Gst.o:Gst.c:(.text+0x5fe): undefined reference to
`gst_version_string'
xs/Gst.o:Gst.c:(.text+0x669): undefined reference to
`g_free'
xs/Gst.o:Gst.c:(.text+0x709): undefined reference to
`gperl_argv_new'
xs/Gst.o:Gst.c:(.text+0x71a): undefined reference to
`gst_init'
xs/Gst.o:Gst.c:(.text+0x722): undefined reference to
`gperl_argv_update'
xs/Gst.o:Gst.c:(.text+0x72a): undefined reference to
`gperl_argv_free'
xs/Gst.o:Gst.c:(.text+0x7e5): undefined reference to
`gperl_argv_new'
A few notes/questions: when i was editing the files from source[0] - did
i need to rename any of the files (other than the extension)? I renamed
the gstreamer.pc.in to gstreamer-0.10.pc seems how that is what was
being asked for. Looking at the other .pc's some have the version number
on the end, some don't. They all had a @VERSION@ variable inside to set
- which i set to the version of my gstreamer binary in all files (0.14).
Was this correct? Any ideas on where to go from here?
Thanks again for all the help.
-Jeff
More information about the gstreamer-devel
mailing list