У меня есть статическая библиотека Objective-C ++ basic.a , с функцией BasicFunction()
.Статические библиотеки Objective-C ++ foo.a и bar.a зависят от basic.a и имеют функции Foo()
и Bar()
, которые вызывают BasicFunction()
,
Вот сложная часть: когда я создаю проект, который связывает в foo.a и bar.a , каждый из которых построен в разное время, я хочу Foo()
для вызова версии BasicFunction()
, которая была там, когда она была построена, и Bar()
для вызова версии BasicFunction()
, которая была там, когда она была построена.(Это связано с тем, что более новые библиотеки не будут ссылаться на старые BasicFunction()
, в которых отсутствуют исправления ошибок.)
В настоящее время происходит то, что Foo()
и Bar()
обе вызывают одну и ту же версию BasicFunction()
тот, который находится в зависимости от двух foo.a и bar.a , которые связаны первыми в проекте.Изменение видимости символа, похоже, не работает, потому что, если BasicFunction()
скрыто, оно скрыто в basic.a и не может быть видно с помощью foo.a или bar.a .
Если нет хорошего способа заставить библиотеки вызывать разные версии BasicFunction()
, как я могу хотя бы обнаружить проблему?Я пробовал класс стража, который проверяет, чтобы он был инициализирован только один раз, но компоновщик, похоже, оптимизирует двух часовых в разных сборках basic.a в одну, опять же из любой библиотеки, которая являетсясвязаны первыми.