Прочитайте документацию dlopen (3) и возьмите за привычку читать документацию каждой функции, которую вы используете.
Вам не хватает
#include <dlfcn.h>
и ваша команда ссылки должна содержать -ldl
.Обе упомянуты на этой странице dlopen (3) man
(вы можете попробовать man dlopen
в своем терминале, чтобы получить его; см. man (1) ).
Обратите внимание, что dlopen
обрабатывает специально пути, которые не содержат /
.Вы, вероятно, хотите передать абсолютный путь к файлу dlopen
.Таким образом, использование dlopen
, скорее всего, приведет к сбою, и вам следует лучше обработать этот сбой (с dlerror (3) и exit (3) , для которого требуется <stdlib.h>
):
if (vulkan_library == nullptr) {
std::cerr << "could not connect to libvulkan: " << dlerror() << std::endl;
exit (EXIT_FAILURE);
}
Кстати (поскольку вы #include "vulkan.h"
), вам, вероятно, не нужно dlopen
libvulkan.so.1
, но вы должны связать вашу программу с этой библиотекой (вероятно, передавая-lvulkan
в некоторую g++
команду связывания).Прочитайте Библиотека программ HowTo , Drepper's Как писать общие библиотеки , документация qmake
, GNU make
, как вызвать g++
компилятор , документацию по компоновщику GNU ld
и т. Д.
Также помните имя искажение , из Поддержка Vulkan в Qt