VPI linker error

Hello,

I am running a Jetson Nano and installed VPI 1.0 through the SDK Manager, which seemed to go fine. However, when I try to build any code that uses VPI I get a linker error.
For example, when I try to build one of the samples:

~/NVIDIA_VPI-1.0-samples/01-convolve_2d$ cmake .
-- Configuring done
-- Generating done
-- Build files have been written to: /home/jn/NVIDIA_VPI-1.0-samples/01-convolve_2d

jn@jn-desktop:~/NVIDIA_VPI-1.0-samples/01-convolve_2d$ make
[ 50%] Linking CXX executable vpi_sample_01_convolve_2d
/opt/nvidia/vpi1/lib64/libnvvpi.so.1.0.15: undefined reference to `NvMediaVPIDescriptorRegister'
/opt/nvidia/vpi1/lib64/libnvvpi.so.1.0.15: undefined reference to `NvMediaVPIDescriptorUnregister'
collect2: error: ld returned 1 exit status
CMakeFiles/vpi_sample_01_convolve_2d.dir/build.make:99: recipe for target 'vpi_sample_01_convolve_2d' failed
make[2]: *** [vpi_sample_01_convolve_2d] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/vpi_sample_01_convolve_2d.dir/all' failed
make[1]: *** [CMakeFiles/vpi_sample_01_convolve_2d.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

I am not really sure where to go from here. I don’t know if it’s relevant but I also get an error when I try to run the pre-compiled binary /opt/nvidia/vpi1/bin/vpi_demo_remap:

OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
---- imager: No override file found. ----
(NvCamV4l2) Error ModuleNotPresent: V4L2Device not available (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function findDevice(), line 256)
(NvCamV4l2) Error ModuleNotPresent:  (propagating from /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function initialize(), line 60)
(NvOdmDevice) Error ModuleNotPresent:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function initialize(), line 106)
NvPclDriverInitializeData: Unable to initialize driver v4l2_sensor
NvPclInitializeDrivers: error: Failed to init camera sub module v4l2_sensor
NvPclStartPlatformDrivers: Failed to start module drivers
NvPclStateControllerOpen: Failed ImagerGUID 1. (error 0xA000E)
NvPclOpen: PCL Open Failed. Error: 0xf
SCF: Error BadParameter: Sensor could not be opened. (in src/services/capture/CaptureServiceDeviceSensor.cpp, function getSourceFromGuid(), line 582)
SCF: Error BadParameter:  (propagating from src/services/capture/CaptureService.cpp, function addSourceByGuid(), line 437)
SCF: Error BadParameter:  (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 295)
SCF: Error BadParameter:  (propagating from src/api/CameraDriver.cpp, function getSource(), line 458)
Acquiring SCF Camera device source via index 0 has failed. ---- imager: No override file found. ----
LSC: LSC surface is not based on full res!
NVMEDIA_ARRAY:   53,  Version 2.1
NVMEDIA_VPI :  156,  Version 2.3
ERROR: vpiImageCreateCUDAMemWrapper: VPI_ERROR_INTERNAL
Unsupported NvMedia VPI API version 2.3, expected version 2.4
ERROR: vpiImageCreateCUDAMemWrapper: VPI_ERROR_INTERNAL
Unsupported NvMedia VPI API version 2.3, expected version 2.4

I hope you can help me with this.

Hi,

It looks like a compatibility issue to me.

Do you flash Nano with the same JetPack version?
If not, please do so to get the required library.

Thanks.

Thanks, this is probably what happened. After I did a clean re-flash everything works normally.