我最近發現webkit模型在Lion和Safari上一版本中不受Apple支持,並且每個人都在遷移到Firebreath項目以使用NPAPI。使用Firebreath框架將可可應用程序轉換爲NPAPI插件
我有一個基本的Cocoa應用程序與下面的原生框架鏈接:
- CoreGraphics在
- CoreData
- 由於IOKit
- PFEventTaps(這是一個3方框架是:Pfiddlesoft.com)
我從來沒有使用過插件,所以這對我來說有點新,我開始使用MAC教程令理查德貝特曼十次,遵循指南後,我最終爲我的個人項目製作了一個firebreath項目模板。我所做的下一步就是將所有Objective-C類放到Source Files文件夾中,並將鏈接添加到4個框架中,最後我將我需要在插件中公開的新公共方法添加到MyProjectPluinApi.h中,例如( registerMethod( 「的MyMethod」,make_method(這一點,& WilmerPlugInAPI ::的MyMethod));
當我建立firebreath項目,我得到了很多的編譯錯誤,他們很重複之一是: NSString was not declared in this scope.
錯誤指向NSObjCRuntime .H
直到現在我不能讓這個版本成功地在Xcode 3.2.6
這裏有什麼問題?我需要更改我的所有代碼才能完成此模板項目中的CPP樣式?或者我可以以某種方式鏈接我的框架? 有我能看到的一些樣品嗎?
更多詳細信息:2011年11月7日: 我試圖用一個簡單的項目來測試:
- 首先我創建testOfFB
- 它在生成項目/用戶/ ME/Firebreath-dev的/ build/projects/testofFB
- 然後我修改類testFBApi.cpp並將其重命名爲testFBApi.mm。
- 我寫了一個名爲testMath.m的Objective-C類,並改名爲testMath.mm
我添加的方法添加與簽名:
-(long) Add:(long)a:(long)b:(long)c;
最後我修改文件testFBApi.mm與此:
registerMethod("add", make_method(this, &testFBAPI::add));
在add方法的實現我創建了Objective-C的類方法「添加」來測試呼叫到我的Objective-C的方法的一個實例。我做了包括和我改變了文件/Mac/projectDef.cmake這樣:
target_link_libraries(${PROJECT_NAME} ${PLUGIN_INTERNAL_DEPS} ${Cocoa.framework} // added line ${Foundation.framework} //added line )
我運行prepmac。sh腳本,然後構建xcode解決方案,並出現相同的錯誤,還有一些其他類似testFBApi尚未聲明。
我提供更多的細節在原崗位低於其根據第的更多細節。但基本上我做了所有提到的事情,我不知道我是否錯過了某些東西,或者我正在用XCODE內部的框架包含錯誤的東西,我手工做了所有事情,我找不到另一種方法做到這一點。在XCODE的幫助下。 – willyMon
這聽起來很像您缺少包含文件。我敢打賭,你原來的項目有一個PCH;當你有PCH時,它會在每個文件中自動在PCH中包含任何內容,但是FireBreath/cmake不能使用該PCH,因此它不再起作用。您可能只需將其中的內容複製到其他文件中。你有抱怨的文件頂部有#import嗎? –
taxilian
好的Taxilian感謝您的幫助,最後我的項目編譯得很好。 不過,我想知道爲什麼我在xcode項目中創建的objective-c類出現在「firebreath-dev」文件夾下?這看起來很奇怪,因爲當我關閉項目然後重新打開它時,我沒有看到objective-c類,但是當我瀏覽到firebreath-dev文件夾時,我可以在其中看到所有這些文件。順便說一下,如果我添加另一個新的框架到我的項目和另一個Objective-C類,我是否需要再次運行prepmac.sh? – willyMon