VisionWorks linking problem

Hello,

I have been trying to use VisionWorks since the new release (1.6) but I am facing some issues.
In fact I changed the includes in my code:

  • #include “NVXIO/Render.hpp”
  • #include “NVXIO/FrameSource.hpp”
  • #include “OVX/RenderOVX.hpp”
  • #include “OVX/FrameSourceOVX.hpp”

I am only using the render and a framesource, so I replaced the namespace “nvxio::” by “ovxio::”.

Finally, I changed the libraries links and flags:
-I/usr/share/visionworks/sources/nvxio/include
-L/usr/share/visionworks/sources/libs/aarch64/linux/release
-lvisionworks
-lnvx
-lovx

My problem is that during the compilation the linker finds undefined references:
(first program)

...
GStreamerImagesFrameSourceImpl.cpp:(.text+0xcb0): undefined reference to `gst_object_unref'
GStreamerImagesFrameSourceImpl.cpp:(.text+0xd4c): undefined reference to `gst_object_unref'
/usr/share/visionworks/sources/libs/aarch64/linux/release/libovx.a(OpenGL.o): In function `nvidiaio::loadGLFunctions(nvidiaio::GLFunctions*)':
OpenGL.cpp:(.text+0x18): undefined reference to `glfwGetProcAddress'
OpenGL.cpp:(.text+0x28): undefined reference to `glfwGetProcAddress'
OpenGL.cpp:(.text+0x38): undefined reference to `glfwGetProcAddress'
OpenGL.cpp:(.text+0x48): undefined reference to `glfwGetProcAddress'
OpenGL.cpp:(.text+0x58): undefined reference to `glfwGetProcAddress'
/usr/share/visionworks/sources/libs/aarch64/linux/release/libovx.a(OpenGL.o):OpenGL.cpp:(.text+0x68): more undefined references to `glfwGetProcAddress' follow
collect2: error: ld returned 1 exit status

(second program)

/usr/share/visionworks/sources/libs/aarch64/linux/release/libovx.a(Application.o): In function `nvxio::(anonymous namespace)::ApplicationImpl::initGui()':
Application.cpp:(.text+0xe4): undefined reference to `glfwSetErrorCallback'
Application.cpp:(.text+0xe8): undefined reference to `glfwInit'
/usr/share/visionworks/sources/libs/aarch64/linux/release/libovx.a(Application.o): In function `nvxio::(anonymous namespace)::ApplicationImpl::~ApplicationImpl()':
Application.cpp:(.text+0x2cc8): undefined reference to `glfwTerminate'
collect2: error: ld returned 1 exit status

I didn’t find any tutorials or steps to follow in order to port VW1.5 programs to VW1.6 (for the compilation).

Thanks for your help !

I managed to fix it by adding the following flags:

-lvisionworks -lovx -lnvx -lpthread
-lgstpbutils-1.0 -lgstapp-1.0 -lgstbase-1.0 -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0
/usr/share/visionworks/sources/3rdparty/glfw3/libs/libglfw3.a
-lXrandr -lXi -lXxf86vm -lX11 -lGL -lfreetype

and

-L/usr/local/cuda/targets/aarch64-linux/lib
-L/usr/share/visionworks/sources/libs/aarch64/linux/release

But when I was using VisionWorks 1.5 I didn’t had to add these flags, why is it necessary now ?
I used to add only:

-lvisionworks -lnvxio

Hi,

From VisionWorks-1.6, we release the source code of NVXIO.
As a results, for third-party libraries, it’s required to link them by user when compiling.

You can check the Makefile in our VisionWorks sample to get more information about the compiling.
Thanks.