Я создаю SDK, который разработчики iPhone могут включать в свои проекты. Он поставляется как скомпилированный ".a", без исходного кода. Позвоните в мой SDK "AAA".
Клиент в своем проекте (пусть его называют "BBB" ), помимо использования AAA, может также использовать стороннюю библиотеку под названием "CCC", которая также поставляется с предварительно скомпилированным закрытым исходным кодом. Я не продаю CCC, это другая компания.
Мой SDK, AAA, может дополнительно использовать CCC для улучшения продукта, используя эти сторонние функции. Например, скажем, CCC - это SDK безопасности для шифрования. AAA не требует CCC, но будет более защищен, если клиент также захочет включить CCC в свой проект.
Теперь вот лишняя сложная часть - библиотека CCC - это чистый C-код, сделанный из функций C Structs и C - ничего объектно-ориентированного.
Проблемы:
- Как я могу скомпилировать свой SDK AAA для использования функций/структур из CCC, не включая CCC в моем проекте (не разрешено законом и не хочет обновляться с обновлениями версий).
- Как я могу определить, имеет ли клиент CCC в своем проекте, использовать эти дополнительные функции только в том случае, если они доступны?