Mac OS X: расширение общей библиотеки путем добавления функции - PullRequest
2 голосов
/ 30 июня 2011

Я хотел бы расширить разделяемую библиотеку c (dylib) в Mac OS X, добавив функцию.Давайте назовем функцию const char *get_string(void).Вот мой подход:

Я создал новую разделяемую библиотеку, содержащую функцию get_string(void), и мне понравилась библиотека, которую я хотел расширить.Оболочка библиотеки, так сказать.Все идет нормально.Следующим шагом будет связать приложение с моей новой расширенной библиотекой, но проблема в том, что расширенная библиотека экспортирует только символ _get_string, но не эти символы исходной библиотеки.Вот почему связывание с «расширенной» библиотекой (а не с исходной библиотекой) приводит к множеству неразрешенных предупреждений о символах / ошибок.

Есть ли способ экспортировать все эти символы исходной библиотеки (их много) или есть лучший подход для решения проблемы.По сути, я просто хочу расширить существующую библиотеку.Кстати, у меня есть доступ к исходной библиотеке, но я не могу просто перекомпилировать ее.

Заранее спасибо!

1 Ответ

2 голосов
/ 30 июня 2011

Как насчет этой опции для ld:

     -reexport-lx
             This is the same as the -lx but specifies that the all symbols in library x should
             be available to clients linking to the library being created.  This was previously
             done with a separate -sub_library option.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...