c++opencvgstreamerunresolved-external

Unresolved External Symbol Error when building OpenCV on Windows with GStreamer


I’m trying to build OpenCV 4.9.0 (https://github.com/opencv/opencv/archive/4.9.0.zip) with GStreamer 1.24.2 on Window 10 Home (x64) with Visual Studio 22 Community Edition. For this I’ve installed both runtime and development installer of GStreamer MSVC 64-bit, VS 2019, Release CRT (both under ‘complete installation’ setting). Which lead to addition of the following system environment variables automatically:

GST_PLUGIN_PATH: C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0
GSTREAMER_1_0_ROOT_MSVC_X86_64: C:\gstreamer\1.0\msvc_x86_64\

I’ve manually made the following additions to the path variable under system variables:

C:\gstreamer\1.0\msvc_x86_64\bin
C:\gstreamer\1.0\msvc_x86_64\lib
C:\gstreamer\1.0\msvc_x86_64\lib\gstreamer-1.0

Next I launch CMake 3.29.2 GUI, add an additional GSTREAMER_DIR variable pointing to “C:/gstreamer/1.0/msvc_x86_64” (without this some includes paths are not automatically picked up when I configure the project) and configure, generate and launch my project in VS2022 with build mode selected as “release”.

Here I’m receiving the following linking errors:

enter image description here

enter image description here

Can anyone please help me with any additional linking steps required to compile this? The OpenCV itself seems to compile just fine if I turn off WITH_GSTREAMER.

I’ve tried the same with mingw64, msys2-ucrt64, vcpkg but unfortunately just can’t seem to get any of it working.

Thank You.


Solution

  • With some hit & trail and looking at the source code files of the GStreamer, I figured out it was C:\gstreamer\1.0\msvc_x86_64\lib\gstapp-1.0.lib that needed to be added as an that needed to be added as additional dependency in opencv_gapi, opencv_test_gapi, opencv_videoio projects in my case.

    In case someone is looking for more detailed instructions: Goto modules>opencv_gapi, right-click and select 'Properties'. In the Linker>Input section click on 'additional dependencies' field, click edit and add C:\gstreamer\1.0\msvc_x86_64\lib\gstapp-1.0.lib there. Repeat the same for modules>opencv_videoio and tests accuracy>opencv_test_gapi.