我正在尝试使用最新的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中,运行时没有加载库函数指针,但使用了标记为extern
和静态链接的所有API方法。在Windows上,他们提供nvcuvid.lib。但是在Linux上,只有上面提到的SO。我的IDE定位该目录(三重检查;如果我删除路径,链接器抱怨它无法找到lib),我也将libnvcuvid.so
放在链接器上的方式与放置{{{ 1}}和cuda.so
在静态链接和CUDA API的相同位置。但我还是得到了
“未定义参考”
用于在最新标头中声明的所有cuvid函数。如您所见,我的驱动程序版本也是最新的(8.1至少需要390)。
为什么它没有链接?
UPDATE(链接器):
/ 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 .....