簡體   English   中英

如何將目標C代碼添加到FireBreath項目中?

[英]How do I add Objective C code to a FireBreath Project?

我正在編寫適用於Mac OS的瀏覽器插件,該插件將在狀態欄中放置一個狀態欄圖標,用戶可以使用該圖標與瀏覽器插件進行交互。 我已經在XCode 4.4.1中成功構建了FireBreath 1.6項目,並且可以將其安裝在瀏覽器中。 但是,FireBreath使用C ++,而Mac OS的大部分現有庫都是用Objective C編寫的。

在/Mac/projectDef.make文件中,我按照此處的建議以及在Internet上找到的其他資源中添加了Cocoa Framework和Foundation Framework:

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

我重新運行prepmac.sh,希望在XCode中使用.mm文件和.m文件創建一個新項目。 但是,似乎它們已被忽略。 我只看到.cpp和.h文件。 我在projectDef.make文件中添加了規則,但似乎沒有什么不同:

file (GLOB PLATFORM RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
    Mac/[^.]*.cpp
    Mac/[^.]*.h
    Mac/[^.]*.m    #added by me
    Mac/[^.]*.mm   #added by me
    Mac/[^.]*.cmake
)

即使手動添加文件,也會出現一系列編譯錯誤。 其中大約有20個,都與NSObjRuntime.h文件有關:

Parse Issue - Expected unqualified-id
Parse Issue - Unknown type name 'NSString'
Semantic Issue - Use of undeclared identifier 'NSString'
Parse Issue - Unknown type name 'NSString'
...
...
Semantic Issue - Use of undeclared identifier 'aSelectorName'
...
...
Semantic Issue - Use of undeclared identifier 'aClassName'
...

它會像這樣繼續一段時間並出現類似的錯誤...

從我閱讀的內容來看,這些錯誤的出現是由於對Foundation Framework的依賴,我相信我已經將其包含在項目中。 我也嘗試單擊XCode中的項目

現在到了我不確定下一步該怎么做的地步。 人們說在C / C ++代碼中使用Objective C並不難,但是XCode和Objective C的新手可能會加劇我的困惑。 在這個新平台上,這只是我的第四天。

我需要怎么做才能使XCode編譯目標C代碼? 請記住,我對此還有些陌生,因此,如果您留下詳細的答案,而不是在標簽中常見的模糊單線,我將不勝感激。 我的想法只是一點點,但是如果您能使我克服這個障礙,我敢肯定,從那里出發我會很好。

更新:

我編輯了project / MyPlugin / CMakeLists.txt文件,並在其中添加了.m和.mm規則。 運行prepmac.sh之后,文件包含在項目中,但是我仍然遇到相同的編譯錯誤。

我將所有.h文件和.mm文件從Obj C代碼移至MyPlugin根文件夾,然后重新運行prepmac.sh文件。 問題仍然存在。 相同的編譯錯誤。

您的問題是您擁有.h文件,這些文件被具有目標c類型和/或包含在其中的c ++文件包含。 為了做您想做的事情,c ++使用的所有類都需要將所有與obj c相關的東西保留在#ifdef中,或者干脆不在頭文件中公開任何obj c。

例如,可以在標頭中使用以下ifdef:

#ifdef __OBJC__
     // Objective C / C++ code here
#endif

重要的是要記住,.h文件是包括和頭文件,所以其實包括很重要的。 如果在.cpp文件中包含目標c代碼,則編譯器會感到困惑和哭泣。


編輯:要記住的最重要的事情是,您需要確保cpp文件中不包含任何目標c頭文件(或其他具有目標c代碼的文件)。 如果可以的話,您會沒事的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM