Я пытаюсь использовать новейший NVIDIA Video SDK , в частности - его NVDEC (lib аппаратного декодера видео).Некоторое время я использовал предыдущую версию, и она загружала указатели функций во время выполнения из 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 нацеливается на этот каталог (трижды проверено; если я удаляю путь, компоновщик жалуется, что он не может найти библиотеку) правильно, также я помещаю 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 .....