DanW 0 Posted May 6, 2021 I tried and get errors when linking the .a Thanks Dan Share this post Link to post
Roger Cigol 107 Posted May 6, 2021 Out of interest, which C++ compiler are you using (classic (32), clang32 or clang64) ? 1 Share this post Link to post
Lars Fosdal 1793 Posted May 6, 2021 It is useful to post the actual errors for others to be able to think about the cause. Share this post Link to post
DanW 0 Posted May 6, 2021 when I use the mingw version of gstreamer I see ilink64 command line c:\program files (x86)\embarcadero\studio\21.0\bin\ilink64.exe -G8 -L.\Win64\Debug;"c:\program files (x86)\embarcadero\studio\21.0\lib\Win64\debug"; "c:\program files (x86)\embarcadero\studio\21.0\lib\win64\release";"c:\program files (x86)\embarcadero\studio\21.0\lib\win64\release\psdk"; C:\Users\Public\Documents\Embarcadero\Studio\21.0\Dcp\Win64;C:\gstreamer\1.0\mingw_x86_64\lib;"C:\gstreamer\1.0\mingw_x86_64\lib\gstreamer-1.0"; C:\Users\Public\Documents\Embarcadero\Studio\21.0\DCP\Win64\Debug;C:\Users\Public\Documents\Embarcadero\Studio\21.0\Dcp\Win64 -j.\Win64\Debug; "c:\program files (x86)\embarcadero\studio\21.0\lib\Win64\debug";"c:\program files (x86)\embarcadero\studio\21.0\lib\win64\release";"c:\program files (x86)\embarcadero\studio\21.0\lib\win64\release\psdk";C:\Users\Public\Documents\Embarcadero\Studio\21.0\Dcp\Win64;C:\gstreamer\1.0\mingw_x86_64\lib; "C:\gstreamer\1.0\mingw_x86_64\lib\gstreamer-1.0";C:\Users\Public\Documents\Embarcadero\Studio\21.0\DCP\Win64\Debug; C:\Users\Public\Documents\Embarcadero\Studio\21.0\Dcp\Win64 -l.\Win64\Debug -v -Gn -GA"C:\Users\DWinsor\AppData\Local\Temp\vfsE889.tmp"="F:\Users\dwinsor\Documents\Embarcadero\Studio\Projects\test2\Unit1.dfm" -aa -V5.0 -Tpe c0w64w rtl.bpi vcl.bpi memmgr.a sysinit.o .\Win64\Debug\Project1.o .\Win64\Debug\Unit1.o , .\Win64\Debug\Project1.exe , .\Win64\Debug\Project1.map , import64.a cp64mti.a , , Project1.res [ilink64 Error] Fatal: Invalid object file 'asnprintf.c.obj' Share this post Link to post
DanW 0 Posted May 6, 2021 Unit1 source: #include <vcl.h> #pragma hdrstop #include <gst/gst.h> #include <string.h> #include "Unit1.h" #pragma link "libgstreamer-1.0.a" typedef struct _CustomData { gboolean is_live; GstElement *pipeline; GMainLoop *loop; } CustomData; static void cb_message (GstBus *bus, GstMessage *msg, CustomData *data) { switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_ERROR: { GError *err; gchar *debug; gst_message_parse_error (msg, &err, &debug); g_print ("Error: %s\n", err->message); g_error_free (err); g_free (debug); gst_element_set_state (data->pipeline, GST_STATE_READY); g_main_loop_quit (data->loop); break; } case GST_MESSAGE_EOS: /* end-of-stream */ gst_element_set_state (data->pipeline, GST_STATE_READY); g_main_loop_quit (data->loop); break; case GST_MESSAGE_BUFFERING: { gint percent = 0; /* If the stream is live, we do not care about buffering. */ if (data->is_live) break; gst_message_parse_buffering (msg, &percent); g_print ("Buffering (%3d%%)\r", percent); /* Wait until buffering is complete before start/resume playing */ if (percent < 100) gst_element_set_state (data->pipeline, GST_STATE_PAUSED); else gst_element_set_state (data->pipeline, GST_STATE_PLAYING); break; } case GST_MESSAGE_CLOCK_LOST: /* Get a new clock */ gst_element_set_state (data->pipeline, GST_STATE_PAUSED); gst_element_set_state (data->pipeline, GST_STATE_PLAYING); break; default: /* Unhandled message */ break; } } //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { GstElement *pipeline; GstBus *bus; GstStateChangeReturn ret; GMainLoop *main_loop; CustomData data; /* Initialize GStreamer */ gst_init (0, 0); /* Initialize our data structure */ memset (&data, 0, sizeof (data)); /* Build the pipeline */ pipeline = gst_parse_launch ("playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm", NULL); bus = gst_element_get_bus (pipeline); /* Start playing */ ret = gst_element_set_state (pipeline, GST_STATE_PLAYING); if (ret == GST_STATE_CHANGE_FAILURE) { g_printerr ("Unable to set the pipeline to the playing state.\n"); gst_object_unref (pipeline); return; } else if (ret == GST_STATE_CHANGE_NO_PREROLL) { data.is_live = TRUE; } main_loop = g_main_loop_new (NULL, FALSE); data.loop = main_loop; data.pipeline = pipeline; gst_bus_add_signal_watch (bus); g_signal_connect (bus, "message", G_CALLBACK (cb_message), &data); g_main_loop_run (main_loop); /* Free resources */ g_main_loop_unref (main_loop); gst_object_unref (bus); gst_element_set_state (pipeline, GST_STATE_NULL); gst_object_unref (pipeline); } //--------------------------------------------------------------------------- Share this post Link to post
DanW 0 Posted May 6, 2021 When I use the MSVC version of gstreamer I get: [ilink64 Error] Fatal: Invalid object file '/0' Share this post Link to post
DanW 0 Posted May 17, 2021 nobody has any idea how to compile the gstreamer libs or use the existing ones? Share this post Link to post
Rolf Fankhauser 1 Posted May 17, 2021 Did you try to generate import libraries with mkexp? Share this post Link to post