我正在尝试使用最新的NVIDIA Video SDK,特别是 - 它的 NVDEC(硬件视频解码器库)。我使用以前的版本已经有一段时间了,它在运行时从 libnvcuvid.so 加载函数指针,它在我的机器上位于:
/usr/lib/nvidia-396/
它包含以下相关项目:
/usr/lib/nvidia-396/libnvcuvid.so
/usr/lib/nvidia-396/libnvcuvid.so.1
/usr/lib/nvidia-396/libnvcuvid.so.396.18
现在,在最新的 SDK 8.1 中,运行时没有加载库函数指针,而是使用了所有标记为的 API 方法extern
和静态链接。在 Windows 上,它们提供 nvcuvid.lib。但是在 linux 上,只有上面提到的 SO。我的 IDE 以该目录为目标(三重检查;如果我删除了路径,链接器会抱怨它找不到 lib)正确,我也将libnvcuvid.so
链接器上的方式与我放置的方式完全相同,cuda.so
并且cudart.so
在静态的相同位置链接与 CUDA API。但我仍然得到
“未定义参考”
对于在最新标头中声明的所有 cuvid 函数。如您所见,我的驱动程序版本也是最新的(8.1 至少需要 390)。
为什么不链接?
更新(链接器):
/usr/bin/g++ -o bin/xxxxx_xxx_d @"xxxxx_xxx.txt" -L。-LDebug -L/usr/lib/nvidia-396 -L/usr/local/cuda-9.1/lib64 -lcuda -lcudart -lnvcuvid .....