使用Firebreath框架将cocoa应用程序转换为NPAPI插件

时间:2011-11-06 23:17:35

标签: cocoa plugins webkit npapi firebreath

我最近发现Apple在Lion和Safari的最后一个版本中不支持webkit模型,并且每个人都要迁移到Firebreath项目以便使用NPAPI。

我有一个基本的Cocoa应用程序,它与以下本机框架链接:

  1. CoreGraphics中
  2. CoreData
  3. 由于IOKit
  4. PFEventTaps(这是一个3方框架:Pfiddlesoft.com)
  5. 我从来没有使用过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日: 我试图用一个简单的项目进行测试:

    • 首先我创建项目testOfFB
      • 它是在/ users / 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类方法“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尚未声明的内容。

1 个答案:

答案 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