Не может статически связать с libnvcuvid.so - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь использовать новейший 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 .....

...