我最近发现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