Преобразование приложения какао в плагин NPAPI с платформой Firebreath - PullRequest
0 голосов
/ 07 ноября 2011

Недавно я обнаружил, что модель webkit не будет поддерживаться Apple в последнем выпуске Lion и Safari и что все переходят на проект Firebreath для использования NPAPI.

У меня есть базовое приложение Cocoa, которое связывается сследующие собственные фреймворки:

  1. CoreGraphics
  2. CoreData
  3. IOKit
  4. PFEventTaps (это трехсторонний фреймворк: Pfiddlesoft.com)

Я никогда не использовал подключаемые модули, так что это немного ново для меня, я начал с учебника по MAC, написанного Ричардом Бейтманом, и после следования рекомендациям я получил шаблон проекта Firebreath для своего личного проекта.Следующим шагом, который я сделал, было просто поместить все мои классы Objective-C в папку «Исходные файлы», добавив связь с четырьмя фреймворками, и, наконец, я добавил новые общедоступные методы, которые нужно выставить в плагине, в MyProjectPluinApi.h, напримерregisterMethod ("MyMethod", make_method (this & & WilmerPlugInAPI :: MyMethod));

Когда я строю проект firebreath, я получаю много ошибок компиляции, одна из которых очень повторяется: NSString was not declared in this scope. Точки ошибкиto NSObjCRuntime.h

До сих пор я не могу получить эту сборку успешно с XCODE 3.2.6

что здесь не так? Мне нужно изменить весь мой код, чтобы реализовать стиль CPP в этомшаблонный проект? Или я могу каким-то образом связать свои фреймворки? Есть ли какой-нибудь образец, который я вижу?

БОЛЬШЕ ДЕТАЛЕЙ: 7 ноября 2011 г .: я пытался протестировать простой проект:

  • Сначала я создаю проект testOfFB
    • , он создается в / users / Me / Firebreath-dev / build / projects / testofFB
  • , затем я изменяю классtestFBApi.cpp и переименуйте его в testFBApi.mm.
  • Я написал класс Objective-c с именем testMath.m и переименовал его в testMath.mm
  • Я добавил метод Add withподпись:

    -(long) Add:(long)a:(long)b:(long)c;
    
  • Наконец, я изменяю файл testFBApi.mm следующим образом:

    registerMethod("add", make_method(this, &testFBAPI::add ));
    
  • В реализации метода addЯ создаю экземпляр метода класса target «c» «add» для проверки вызова моего методаjective-c.Я сделал включения и изменил файл /Mac/projectDef.cmake следующим образом:

    target_link_libraries(${PROJECT_NAME}
        ${PLUGIN_INTERNAL_DEPS}
        ${Cocoa.framework} // added line
        ${Foundation.framework} //added line
    )
    

Я запускаю сценарий prepmac.sh, а затем создаю решение xcode и те же ошибкипоявляются и некоторые другие, такие как testFBApi, не было объявлено.

1 Ответ

0 голосов
/ 07 ноября 2011

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

Если вам нужно использовать код target-c и код c ++ в одном и том же файле, вам нужно использовать расширение файла .mm (jective-c ++), а не более распространенное расширение .m (target-c).

Кроме этого, мне нужно увидеть больше вашего кода, чтобы точно догадаться, что может быть не так; Я предполагаю, что, возможно, у вас есть пропущенные включения, например. Обратите внимание, что если в вашем старом проекте был PCH, он, скорее всего, не используется в новом проекте.

Для получения дополнительной информации о добавлении платформ с помощью cmake см. http://www.firebreath.org/display/documentation/Using+Libraries

...