2011-11-06 87 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

相关问题