Можно ли использовать компоновщик gcc в сочетании с dlopen?

0

Итак, у меня есть программа, которая использует xerces-c c++. Я пытаюсь изменить его, чтобы не требовать, чтобы библиотека присутствовала при запуске программы, так как есть ее части, которые можно запускать независимо. Можно ли выполнить это с помощью dlopen() чтобы загрузить библиотеку, все еще используя компоновщик в gcc для разрешения символов во время компиляции? Может быть, мне что-то не хватает, но API-интерфейс xerces-c кажется очень трудным для использования с dlsym(), поэтому я пытаюсь найти обходное решение.

  • 0
    Написать тупые заглушки для всех этих функций и перекомпилировать без ссылки на общую библиотеку и вместо ссылки на ваши заглушки?
  • 0
    @ user2225104 Я все еще хочу иметь возможность использовать xerces-c, если он есть, я просто хочу не допустить, чтобы ld убивал мою программу, когда ее там нет
Теги:
gcc

1 ответ

3
Лучший ответ

Самое простое решение в таких случаях - разделить вашу программу на две части: основную программу, которая не имеет зависимости от xerces-c, и разделяемую библиотеку. Затем вы dlopen свою общую библиотеку, которая загружает xerces и использует ее. Таким образом, вы можете определить свой собственный API библиотеки, в основном.

  • 0
    У меня уже есть один класс, который обрабатывает интерфейс с помощью xerces, так что это, вероятно, лучшее решение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню