Glib c ошибка: недопустимый режим для dlopen (): недопустимый аргумент - PullRequest
1 голос
/ 13 апреля 2020

Я пытаюсь загрузить динамическую c библиотеку во время выполнения, используя dlopen. Я называю это так:

dlopen("/absolute/path/to/libFoo.so", 0);

И это приводит к следующей ошибке:

invalid mode for dlopen(): Invalid argument

Этот код прекрасно работает в macOS, но не работает в Ubuntu 18.04.4 LTS. В чем смысл этой ошибки и как ее исправить?

1 Ответ

1 голос
/ 14 апреля 2020

Этот код отлично работает на macOS

Это не значит, что в нем нет ошибок.

Что означает эта ошибка и как я могу это исправить?

со страницы руководства : одно из следующих двух значений должно быть включено во флаги: RTLD_LAZY, RTLD_NOW .

Вы не включили ни один флаг, и это ошибка в вашей программе, о которой сообщает GLIB C.

Чтобы исправить это, замените 0 на RTLD_LAZY или RTLD_NOW, в зависимости от того, что подходит для вашей программы.

...