VisionWorks and libovx.a/libnvx.a

I don’t think I fully understand the logical separations between the parts of the VisionWorks package (VisionWorks CUDA API vs OpenVX API vs OpenVX Framework). Here’s what I mean:

I’m writing some test code for VisionWorks that makes use of the stereo image processing features. All of the VisionWorks examples I can find use things from the ovxio namespace, which are defined in the nvxio/include/OVX headers. I can compile and link fine just using the visionworks.pc pkg-config settings (libvisionworks.so, libcuda- libcudart.so as the only linked libraries).

I’m NOT compiling /usr/share/visionworks/sources, and thus am NOT linking in libnvx.a and libovx.a. I’m trying to use and link against what is available from the binary visionworks package itself.

However, when I run I get the following error:

undefined symbol: _ZN5ovxio21checkIfContextIsValidEP11_vx_context

Seems that this is probably defined in libnvx.a or libovx.a.

So my question: Do I have to compile /usr/share/visionworks/sources and link against these libraries to get the OpenVX utilities in my package? If I want to just use VisionWorks itself (whatever that means) and not compile additional sources, am I limited to the API listed in the Help documents as “NVX CUDA API”?

Hi,

There is an API change from version 1.5 to 1.6.
NVXIO was split into NVX and OVX.
And libnvx.a and libovx.a will be generated automatically before building visionworks samples.

Please read more information in VisionWorks release note:
https://developer.nvidia.com/embedded/dlc/visionworks-1-6-release-notes

Here is a good Makefile example for VisionWorks-1.6 for your reference:
https://devtalk.nvidia.com/default/topic/1016273/jetson-tx2/visionworks-linking-problem/post/5179211/#5179211

Thanks.

OK, I’ve got everything building/linking now. I guess my confusion is that after we finish installing Vision works with JetPack, it’s not really installed yet: we still have to build the /use/share/visionworks/sources directory to get the OpenVX functionality, yes?

Hi,

Libraries is installed but the sample is not copied into home directly from VisionWorks-1.6.
User can copy the sample from the ‘/use/share/visionworks/sources’ if required.

We list this information in our README:

Thanks

I’m going to accept your answer, because yes, the libvisionworks.so library is installed. My comment is that libovx.a and libnvx.a are not generated until the VisionWorks sources are compiled. I’m not yet very familiar with the CUDA vs OpenVX vs VisionWorks boundaries, so I will continue to read up on these.

Also, FYI, I think your README link is broken.

Thank you!