2011-11-06 89 views
0

我最近發現webkit模型在Lion和Safari上一版本中不受Apple支持,並且每個人都在遷移到Firebreath項目以使用NPAPI。使用Firebreath框架將可可應用程序轉換爲NPAPI插件

我有一個基本的Cocoa應用程序與下面的原生框架鏈接:

  1. CoreGraphics在
  2. CoreData
  3. 由於IOKit
  4. 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尚未聲明。

回答

0

很難說沒有更多的信息,但你可能需要更新你的cmake文件來導入你需要的框架;如果你在xcode中手動執行,它應該也可以工作,但我沒有嘗試過這種方式。你應該知道用cmake添加它不會將它添加到xcode的框架列表中,儘管它應該在那裏。

如果您需要在同一個文件中使用Objective-C代碼和C++代碼,則需要使用.mm文件擴展名(objective-C++),而不是更常見的.m(objective-c)擴展名。

除此之外,我需要看到更多的代碼來猜測可能是錯誤的,例如,我猜想你可能已經失蹤了。請注意,如果您的舊項目中有PCH,則很可能不會在新項目中使用。

有關添加與C進行框架的詳細信息請參見http://www.firebreath.org/display/documentation/Using+Libraries

+0

我提供更多的細節在原崗位低於其根據第的更多細節。但基本上我做了所有提到的事情,我不知道我是否錯過了某些東西,或者我正在用XCODE內部的框架包含錯誤的東西,我手工做了所有事情,我找不到另一種方法做到這一點。在XCODE的幫助下。 – willyMon

+0

這聽起來很像您缺少包含文件。我敢打賭,你原來的項目有一個PCH;當你有PCH時,它會在每個文件中自動在PCH中包含任何內容,但是FireBreath/cmake不能使用該PCH,因此它不再起作用。您可能只需將其中的內容複製到其他文件中。你有抱怨的文件頂部有#import 嗎? – taxilian

+0

好的Taxilian感謝您的幫助,最後我的項目編譯得很好。 不過,我想知道爲什麼我在xcode項目中創建的objective-c類出現在「firebreath-dev」文件夾下?這看起來很奇怪,因爲當我關閉項目然後重新打開它時,我沒有看到objective-c類,但是當我瀏覽到firebreath-dev文件夾時,我可以在其中看到所有這些文件。順便說一下,如果我添加另一個新的框架到我的項目和另一個Objective-C類,我是否需要再次運行prepmac.sh? – willyMon

相關問題