我最近发现Apple在Lion和Safari的最后一个版本中不支持webkit模型,并且每个人都要迁移到Firebreath项目以便使用NPAPI。
我有一个基本的Cocoa应用程序,它与以下本机框架链接:
我从来没有使用过PlugIns所以这对我来说有点新鲜,我开始使用Richard bateman编写的MAC教程,遵循指南后我最终得到了个人项目的firebreath项目模板。我做的下一步是将所有Objective-C类放入Source Files文件夹中,添加4个框架的链接,最后我将插件中需要公开的新公共方法添加到MyProjectPluinApi.h中(例如registerMethod(“MyMethod”,make_method(this,& WilmerPlugInAPI :: MyMethod));
当我构建firebreath项目时,我遇到了很多编译错误,其中一个非常重复:
NSString was not declared in this scope.
错误指向NSObjCRuntime.h
到目前为止,我无法使用XCODE 3.2.6
成功构建此版本这里有什么问题?我需要更改所有代码才能在此模板项目中完成CPP样式?或者我可以用某种方式链接我的框架? 我能看到一些样品吗?
更多细节:2011年11月7日: 我试图用一个简单的项目进行测试:
我添加一个带签名的方法:
-(long) Add:(long)a:(long)b:(long)c;
最后我用这个修改文件testFBApi.mm:
registerMethod("add", make_method(this, &testFBAPI::add ));
在add方法的实现中,我创建了一个objective-c类方法“add”的实例来测试对我的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 :(得分:0)
如果没有更多信息,很难说,但您可能需要更新您的cmake文件以导入您需要的框架;如果你在xcode中手动执行它应该也可以工作,但我没有尝试过这种方式。你应该知道用cmake添加它不会将它添加到xcode中的框架列表中,尽管它应该在那里。
如果您需要在同一文件中使用objective-c代码和c ++代码,则需要使用.mm文件扩展名(objective-c ++)而不是更常见的.m(objective-c)扩展名。< / p>
除此之外,我需要看到更多代码来猜测可能出错的代码;例如,我猜想也许你错过了包含。请注意,如果旧项目中有PCH,则很可能未在新项目中使用。
有关使用cmake添加框架的更多信息,请参阅http://www.firebreath.org/display/documentation/Using+Libraries