<div dir="ltr">I don't know what might be causing this, but you might save yourself some time by skipping the build and using the MSVC installers to get the build artifacts. (The MSVC is less buggy than the MinGW.)<div><br></div><div>What I do is I install the "runtime installer" and "development installer", then I copy the components from C:\gstreamer (or wherever) into a portable little "package" that my C++ code can reference.</div><div><br></div><div>After you run the installers, check your environment for variable names that begin with GST, and your path for anything like "C:\gstreamer\...", and purge all of that.</div><div><br></div><div>BTW, my C++ application does a bit of environmental housekeeping just before I initialize gstreamer (with gst_init). I'm not sure if this stuff is necessary but it works for us.</div><div><br></div><div><pre style="color:rgb(32,32,32);font-family:"JetBrains Mono",monospace;font-size:7.5pt"> <span style="color:rgb(56,56,56);font-style:italic">//</span><span style="color:rgb(36,135,0);font-style:italic"> This is where the plugins live.<br></span><span style="color:rgb(36,135,0);font-style:italic"> </span><span style="color:rgb(107,47,186)">boost</span><span style="color:rgb(56,56,56)">::</span><span style="color:rgb(107,47,186)">filesystem</span><span style="color:rgb(56,56,56)">::</span>path pluginFolder <span style="color:rgb(56,56,56)">=</span> assemblyFolder <span style="color:rgb(56,56,56)">/ "</span><span style="color:rgb(140,108,65)">plugins</span><span style="color:rgb(56,56,56)">";<br></span><span style="color:rgb(56,56,56)"> <br></span><span style="color:rgb(56,56,56)"> </span><span style="color:rgb(56,56,56);font-style:italic">//</span><span style="color:rgb(36,135,0);font-style:italic"> WARNING: setting an environment variable is only safe at the beginning of the program (before any<br></span><span style="color:rgb(36,135,0);font-style:italic"> </span><span style="color:rgb(56,56,56);font-style:italic">//</span><span style="color:rgb(36,135,0);font-style:italic"> other threads have been spun up). We do this to maintain strict control over the components that<br></span><span style="color:rgb(36,135,0);font-style:italic"> </span><span style="color:rgb(56,56,56);font-style:italic">//</span><span style="color:rgb(36,135,0);font-style:italic"> we are using.<br></span><span style="color:rgb(36,135,0);font-style:italic"> </span><span style="color:rgb(15,84,214)">const char</span><span style="color:rgb(56,56,56)">*</span> priorGstPluginPath <span style="color:rgb(56,56,56)">= </span><span style="color:rgb(0,133,95)">g_getenv</span><span style="color:rgb(56,56,56)">("</span><span style="color:rgb(140,108,65)">GST_PLUGIN_PATH</span><span style="color:rgb(56,56,56)">");<br></span><span style="color:rgb(56,56,56)"> </span><span style="color:rgb(107,47,186)">std</span><span style="color:rgb(56,56,56)">::</span>string gstPluginPath <span style="color:rgb(56,56,56)">= </span><span style="color:rgb(107,47,186)">string</span><span style="color:rgb(56,56,56)">::</span><span style="color:rgb(0,133,95)">unwiden</span><span style="color:rgb(56,56,56)">(pluginFolder.</span><span style="color:rgb(0,133,95)">string</span><span style="color:rgb(56,56,56)">());<br></span><span style="color:rgb(56,56,56)"> </span><span style="color:rgb(15,84,214)">if </span><span style="color:rgb(56,56,56)">(</span>priorGstPluginPath <span style="color:rgb(56,56,56)">&& (</span>0 <span style="color:rgb(56,56,56)">!= priorGstPluginPath[</span>0<span style="color:rgb(56,56,56)">]))<br></span><span style="color:rgb(56,56,56)"> {<br></span> gstPluginPath <span style="color:rgb(56,56,56)">=</span> gstPluginPath <span style="color:rgb(56,56,56)">+</span> PATHS_SEP_STR <span style="color:rgb(56,56,56)">+</span> priorGstPluginPath<span style="color:rgb(56,56,56)">;<br></span><span style="color:rgb(56,56,56)"> }<br></span><span style="color:rgb(56,56,56)"><br></span><span style="color:rgb(56,56,56)"> </span><span style="color:rgb(0,133,95)">g_unsetenv</span><span style="color:rgb(56,56,56)">("</span><span style="color:rgb(140,108,65)">GST_PLUGIN_SYSTEM_PATH_1_0</span><span style="color:rgb(56,56,56)">");<br></span><span style="color:rgb(56,56,56)"> </span><span style="color:rgb(0,133,95)">g_unsetenv</span><span style="color:rgb(56,56,56)">("</span><span style="color:rgb(140,108,65)">GST_PLUGIN_SYSTEM_PATH</span><span style="color:rgb(56,56,56)">");<br></span><span style="color:rgb(56,56,56)"> </span><span style="color:rgb(0,133,95)">g_unsetenv</span><span style="color:rgb(56,56,56)">("</span><span style="color:rgb(140,108,65)">GST_PLUGIN_PATH_1_0</span><span style="color:rgb(56,56,56)">");<br></span><span style="color:rgb(56,56,56)"><br></span><span style="color:rgb(56,56,56)">#</span><span style="color:rgb(15,84,214)">if </span><span style="color:rgb(0,133,95)">ARCH_32_BIT<br></span> g_unsetenv("GSTREAMER_ROOT_X86");<br> <span style="color:rgb(0,133,95)">g_unsetenv</span><span style="color:rgb(56,56,56)">("</span><span style="color:rgb(140,108,65)">GSTREAMER_ROOT_MSVC_X86</span><span style="color:rgb(56,56,56)">");<br></span><span style="color:rgb(56,56,56)"> </span><span style="color:rgb(0,133,95)">g_setenv</span><span style="color:rgb(56,56,56)">("</span><span style="color:rgb(140,108,65)">GSTREAMER_1_0_ROOT_X86</span><span style="color:rgb(56,56,56)">", </span><span style="color:rgb(107,47,186)">string</span><span style="color:rgb(56,56,56)">::</span><span style="color:rgb(0,133,95)">unwiden</span><span style="color:rgb(56,56,56)">(assemblyFolder.</span><span style="color:rgb(0,133,95)">string</span><span style="color:rgb(56,56,56)">()).</span><span style="color:rgb(0,133,95)">c_str</span><span style="color:rgb(56,56,56)">(), </span><span style="color:rgb(0,147,161);font-weight:bold">true</span><span style="color:rgb(56,56,56)">);<br></span><span style="color:rgb(56,56,56)"> </span><span style="color:rgb(0,133,95)">g_setenv</span><span style="color:rgb(56,56,56)">("</span><span style="color:rgb(140,108,65)">GSTREAMER_1_0_ROOT_MSVC_X86</span><span style="color:rgb(56,56,56)">", </span><span style="color:rgb(107,47,186)">string</span><span style="color:rgb(56,56,56)">::</span><span style="color:rgb(0,133,95)">unwiden</span><span style="color:rgb(56,56,56)">(assemblyFolder.</span><span style="color:rgb(0,133,95)">string</span><span style="color:rgb(56,56,56)">()).</span><span style="color:rgb(0,133,95)">c_str</span><span style="color:rgb(56,56,56)">(), </span><span style="color:rgb(0,147,161);font-weight:bold">true</span><span style="color:rgb(56,56,56)">);<br></span><span style="color:rgb(56,56,56)">#</span><span style="color:rgb(15,84,214)">elif</span> ARCH_64_BIT<br> <span style="color:rgb(0,133,95)">g_unsetenv</span><span style="color:rgb(56,56,56)">("</span><span style="color:rgb(140,108,65)">GSTREAMER_ROOT_X86_64</span><span style="color:rgb(56,56,56)">");<br></span><span style="color:rgb(56,56,56)"> </span><span style="color:rgb(0,133,95)">g_unsetenv</span><span style="color:rgb(56,56,56)">("</span><span style="color:rgb(140,108,65)">GSTREAMER_ROOT_MSVC_X86_64</span><span style="color:rgb(56,56,56)">");<br></span><span style="color:rgb(56,56,56)"> </span><span style="color:rgb(0,133,95)">g_setenv</span><span style="color:rgb(56,56,56)">("</span><span style="color:rgb(140,108,65)">GSTREAMER_1_0_ROOT_X86_64</span><span style="color:rgb(56,56,56)">", </span><span style="color:rgb(107,47,186)">string</span><span style="color:rgb(56,56,56)">::</span><span style="color:rgb(0,133,95)">unwiden</span><span style="color:rgb(56,56,56)">(assemblyFolder.</span><span style="color:rgb(0,133,95)">string</span><span style="color:rgb(56,56,56)">()).</span><span style="color:rgb(0,133,95)">c_str</span><span style="color:rgb(56,56,56)">(), </span><span style="color:rgb(0,147,161);font-weight:bold">true</span><span style="color:rgb(56,56,56)">);<br></span><span style="color:rgb(56,56,56)"> </span><span style="color:rgb(0,133,95)">g_setenv</span><span style="color:rgb(56,56,56)">("</span><span style="color:rgb(140,108,65)">GSTREAMER_1_0_ROOT_MSVC_X86_64</span><span style="color:rgb(56,56,56)">", </span><span style="color:rgb(107,47,186)">string</span><span style="color:rgb(56,56,56)">::</span><span style="color:rgb(0,133,95)">unwiden</span><span style="color:rgb(56,56,56)">(assemblyFolder.</span><span style="color:rgb(0,133,95)">string</span><span style="color:rgb(56,56,56)">()).</span><span style="color:rgb(0,133,95)">c_str</span><span style="color:rgb(56,56,56)">(), </span><span style="color:rgb(0,147,161);font-weight:bold">true</span><span style="color:rgb(56,56,56)">);<br></span><span style="color:rgb(56,56,56)">#</span><span style="color:rgb(15,84,214)">else<br></span><span style="color:rgb(15,84,214)"> </span><span style="color:rgb(56,56,56)">#</span><span style="color:rgb(15,84,214)">error </span><span style="color:rgb(56,56,56)">"</span><span style="color:rgb(140,108,65)">Unknown architecture (32-bit vs. 64-bit)</span><span style="color:rgb(56,56,56)">"<br></span><span style="color:rgb(56,56,56)">#</span><span style="color:rgb(15,84,214)">endif<br></span><span style="color:rgb(15,84,214)"><br></span><span style="color:rgb(15,84,214)"> </span><span style="color:rgb(0,133,95)">g_setenv</span><span style="color:rgb(56,56,56)">("</span><span style="color:rgb(140,108,65)">GST_PLUGIN_PATH</span><span style="color:rgb(56,56,56)">", gstPluginPath.</span><span style="color:rgb(0,133,95)">c_str</span><span style="color:rgb(56,56,56)">(), </span><span style="color:rgb(0,147,161);font-weight:bold">true</span><span style="color:rgb(56,56,56)">);<br></span><span style="color:rgb(56,56,56)"><br></span><span style="color:rgb(56,56,56)">#</span><span style="color:rgb(15,84,214)">if </span><span style="color:rgb(0,133,95)">BOOST_OS_WINDOWS<br></span> // The nuget package provides some modules that are needed to enable some fancy network encryption stuff, but<br> <span style="color:rgb(56,56,56);font-style:italic">//</span><span style="color:rgb(36,135,0);font-style:italic"> I have only seen it available on Windows. Perhaps it is not required on Linux. We only need it on Windows<br></span><span style="color:rgb(36,135,0);font-style:italic"> </span><span style="color:rgb(56,56,56);font-style:italic">//</span><span style="color:rgb(36,135,0);font-style:italic"> because it enables a feature that enables WebRTC in our Windows client aplications.<br></span><span style="color:rgb(36,135,0);font-style:italic"> </span><span style="color:rgb(107,47,186)">boost</span><span style="color:rgb(56,56,56)">::</span><span style="color:rgb(107,47,186)">filesystem</span><span style="color:rgb(56,56,56)">::</span>path gioModuleFolder <span style="color:rgb(56,56,56)">=</span> assemblyFolder <span style="color:rgb(56,56,56)">/ "</span><span style="color:rgb(140,108,65)">gio_modules</span><span style="color:rgb(56,56,56)">";<br></span><span style="color:rgb(56,56,56)"> </span><span style="color:rgb(107,47,186)">std</span><span style="color:rgb(56,56,56)">::</span>string gioModuleFolderString <span style="color:rgb(56,56,56)">= </span><span style="color:rgb(107,47,186)">string</span><span style="color:rgb(56,56,56)">::</span><span style="color:rgb(0,133,95)">unwiden</span><span style="color:rgb(56,56,56)">(gioModuleFolder.</span><span style="color:rgb(0,133,95)">string</span><span style="color:rgb(56,56,56)">());<br></span><span style="color:rgb(56,56,56)"> </span><span style="color:rgb(0,133,95)">g_setenv</span><span style="color:rgb(56,56,56)">("</span><span style="color:rgb(140,108,65)">GIO_MODULE_DIR</span><span style="color:rgb(56,56,56)">", gioModuleFolderString.</span><span style="color:rgb(0,133,95)">c_str</span><span style="color:rgb(56,56,56)">(), </span><span style="color:rgb(0,147,161);font-weight:bold">true</span><span style="color:rgb(56,56,56)">);<br></span><span style="color:rgb(56,56,56)">#</span><span style="color:rgb(15,84,214)">endif</span></pre></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Mar 22, 2022 at 4:52 AM MK via gstreamer-devel <<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello,<br>
<br>
I've written a DLL plugin for a 3rd party application which initially<br>
only used libjpeg for motion JPEG support. I used a VisualStudio (2017)<br>
template which the 3rd party supplier provides as starting point. That<br>
worked fine.<br>
<br>
To be able to support other stream formats, I switched to gstreamer<br>
instead of libjpeg. I can build the plugin and it works fine on the PC<br>
where it was compiled (let's call it PC1). When I copy all the files to<br>
another PC (PC2), the 3rd party application fails to load the DLL,<br>
because of some missing DLL dependencies. When I compile the project on<br>
PC2, it works well on PC2. But the version from PC2 fails on PC1.<br>
<br>
I checked the dependencies with 'Dependencies' and noticed that on PC1<br>
the missing DLLs differ from the missing DLLs on PC2. But even the<br>
required DLLs differ from PC1 to PC2.<br>
<br>
Does anyone have an idea what could cause this behavior?<br>
<br>
Best regards,<br>
Michael<br>
<br>
PS: both versions do not run on PC3.<br>
</blockquote></div>