Я создаю разделяемую библиотеку, которую динамически загружаю (используя dlopen) в свое приложение AIX, используя компилятор IBM VisualAge C / C ++.К сожалению, кажется, что он удаляет необходимые символы:
rtld: 0712-002 fatal error: exiting.
rtld: 0712-001 Symbol setVersion__Q2_3CIF17VersionReporterFRCQ2_3std12basic_stringXTcTQ2_3std11char_traitsXTc_TQ2_3std9allocatorXTc__ was referenced
from module ./object/AIX-6.1-ppc/plugins/plugin.so(), but a runtime definition
of the symbol was not found.
И общая библиотека, и приложение, которое загружает компиляцию / ссылку общей библиотеки в статическую библиотеку, которая содержит VersionReporter, упомянутый в сообщении об ошибке.
Чтобы связать общую библиотеку, я использую следующие параметры: -bM: SRE -bnoentry -bexpall Чтобы связать приложение, я использую эту опцию: -brtl
Есть ли опция Iможно использовать для предотвращения удаления этого символа в приложении?Я пытался использовать -nogc, как указано в документации IBM, но это приводит к тому, что разделяемая библиотека имеет недопустимый формат или приложение не может установить связь (в зависимости от того, с кем я ее использую).