Интегрировать библиотеку C ++ в приложение для iPhone - PullRequest
8 голосов
/ 21 ноября 2008

Могу ли я интегрировать мою существующую библиотеку C ++ в приложение для iPhone?

Ответы [ 3 ]

4 голосов
/ 21 ноября 2008

Хотя это правда, что вы не можете смешивать классы C ++ в Objective-C, вы можете смешивать его с Objective-C ++, который, я считаю, также поддерживается в iPhone. Интеграция кода C ++ с приложением iPhone не должна быть проблемой, но если вы хотите оставаться на безопасной стороне, вам следует создать свой код как библиотеку, а затем связать его с приложением iPhone; таким образом, вам не нужно беспокоиться о смешивании кода Obj-C и классов C ++.

Что касается одобрения Apple, никто не может дать вам окончательный ответ относительно того, что может или не может квалифицировать ваше приложение для включения в магазин, так как Apple довольно закрыта относительно всего процесса. Тем не менее, к настоящему моменту стало ясно, что определенные типы приложений не собираются делать это; а именно:

  • Приложения, которые «злоупотребляют» или искажают iPhone SDK так, как это не нравится Apple. IE, настройка яркости устройства
  • Использование слишком большой полосы пропускания или системных ресурсов (без необходимости разряжать батарею)
  • Дублирование функциональности Apple где-то (например, создание почтового клиента, веб-браузера и т. Д.)
  • Злоупотребление уровнями и схемами цен

На самом деле, лучше просто поискать примеры запрещенных приложений в Google, чтобы лучше их понять. Но суть в том, что это не как ваше приложение что-то делает, это то, что делает ваше приложение, что приведет к его запрету.

3 голосов
/ 21 ноября 2008

Цель C ++ хорошо определена и поддерживается gcc от Apple.

Но вы не можете смешивать классы C ++ и объективные C, что делает этот процесс довольно грязным. Я не думаю, что есть много проектов в дикой природе, которые смешивают C ++ и Objective C в любой серьезной степени.

Это сильно зависит от вашей библиотеки, но если (реально) это возможно, я бы обернул C ++ внутри библиотеки C, используя внешние точки входа "C" для всей реальной функциональности, и связался бы с этим из вашего целевого кода C для приложение для iphone.

2 голосов
/ 05 июня 2009

Я только начал разработку iPhone, но смог успешно использовать некоторые существующие библиотеки C ++ без каких-либо изменений. Я привел некоторые классы OpenGL, которые я уже написал, и они прекрасно работают, так как все библиотеки на iPhone - C, а не Obj-C. Я, например, загружаю текстуру в массив GLubyte, используя Obj-C, чтобы получить ресурсы, размер и т. Д., Затем передаю эти значения в мой код C ++, который выполняет вызовы gl для создания текстуры. То же самое относится и к загрузке геометрии.

Просто измените ваши файлы .m на .mm, и все, похоже, будет работать. Объективные классы C ++ могут иметь члены, которые являются классами C ++ (хотя я не думаю, что применяется другой способ, что может быть проблемой).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...