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



我最近发现苹果在Lion和Safari最新版本中将不支持webkit模型,每个人都在迁移到Firebreath项目以使用NPAPI。

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

  1. CoreGraphics
  2. CoreData
  3. IOKit
  4. PFEventTaps(这是一个三方框架:Pfiddlesoft.com)

我从来没有使用过插件,所以这对我来说有点新,我从Richard bateman写的MAC教程开始,在遵循指导方针之后,我最终为我的个人项目创建了一个firebreath项目模板。下一步我所做的只是把我所有的Objective-C类到源文件文件夹添加链接与4个框架,最后我添加了新的公共方法,我需要暴露在插件到MyProjectPluinApi.h例如(registerMethod("MyMethod",make_method(这个,&WilmerPlugInAPI::MyMethod));

当我构建firebreath项目时,我得到了很多编译错误,其中一个非常重复的是:NSString was not declared in this scope.错误指向nsobjcrtime .h

直到现在我还不能用XCODE 3.2.6成功地获得这个构建

这里出了什么问题?我需要改变我所有的代码来完成这个模板项目的CPP风格?或者我可以以某种方式链接我的框架?有样品让我看看吗?

详情:2011年11月7日:我试着用一个简单的项目来测试:

    首先,我创建项目testOfFB
    • 生成于/users/Me/Firebreath-dev/build/projects/testofFB
  • 然后我修改类testFBApi.cpp,并将其重命名为testFBApi.mm。我写了一个名为testMath的Objective-c类。并将其重命名为testMath.mm
  • 我添加了一个方法add签名:

    -(long) Add:(long)a:(long)b:(long)c;
    
  • 最后修改文件testFBApi。Mm with this:

    registerMethod("add", make_method(this, &testFBAPI::add ));
    
  • 在add方法的实现中,我创建了一个objective-c类方法"add"的实例来测试对我的objective-c方法的调用。我做了包括,我改变了文件/Mac/projectDef。

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

我运行prepmac.sh脚本,然后构建xcode解决方案,出现相同的错误加上一些其他的,如testFBApi没有被声明。

没有更多的信息很难说,但是你可能需要更新你的cmake文件来导入你需要的框架;如果你在xcode中手工做,它应该也能工作,但我没有尝试过。你应该知道,用cmake添加它不会将它添加到xcode的框架列表中,尽管它应该在那里。

如果你需要在同一个文件中使用objective-c代码和c++代码,你需要使用。mm文件扩展名(objective-c++)而不是更常见的。m (objective-c)扩展名。

除此之外,我需要看到更多的代码来猜测什么可能是错误的;我猜也许你有缺失的包括,例如。请注意,如果您在旧项目中有一个PCH,那么它很可能不会在新项目中使用。

有关使用cmake添加框架的更多信息,请参阅http://www.firebreath.org/display/documentation/Using+Libraries

相关内容

  • 没有找到相关文章

最新更新