0

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

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

  1. 核心图形
  2. 核心数据
  3. IOKit
  4. PFEventTaps(这是一个 3 方框架:Pfiddlesoft.com)

我从来没有使用过插件,所以这对我来说有点新,我从 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
  • 我添加了一个带有签名的方法 Add:

    -(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。

4

1 回答 1

0

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

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

除此之外,我需要查看更多代码才能确定可能出现的问题;例如,我猜你可能缺少包含。请注意,如果您在旧项目中有 PCH,则很可能不会在新项目中使用它。

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

于 2011-11-07T01:07:56.613 回答