【问题标题】:Using data types from a objective-c++ framework in a swift datamodel在 swift 数据模型中使用来自 Objective-C++ 框架的数据类型
【发布时间】:2016-10-18 04:06:48
【问题描述】:

我想在我的iOS 应用程序中使用openCV2 framework,但是,我更喜欢swift。我可以很好地阅读和理解obj-c 以理解框架并在bridging header 中编写我需要的methods,但我不习惯在obj-C 中编写整个应用程序。不幸的是,我需要在我的数据模型或其他地方使用一些data types、(cv::Matcv::MserManager 等)。有没有办法将datatypes 包含在我的bridging header 中,以便我可以在swift 中使用它们?

【问题讨论】:

    标签: ios objective-c swift opencv bridging-header


    【解决方案1】:

    您不能在从 Swift 调用的代码中使用 C++ 类型。但是,您可以在具有 .mm 扩展名的 Objective-C++ 文件中使用它们。您可以在 Objective-C++ 中混合使用 Objective-C 和 C++ 代码,并且可以通过桥接包装器将声明中未引用 C++ 的 Objective-C 方法公开给 Swift。这些函数仍然可以在它们的实现中使用 C++,这在 Swift 中通过桥接头是不可见的。

    您还需要注意语言链接(还记得extern "C"吗?)。

    以下是一些提供示例的答案:

    1) Video processing with OpenCV in IOS Swift project

    2) Include C++ header file in Swift

    3)How to access Swift-objects from a c++ class?

    【讨论】:

      【解决方案2】:

      不幸的是,您不能将 C++ 和 Objective-C++ 直接桥接到 Swift。从好的方面来说,您仍然可以在您的应用程序中使用 openCV2 框架,但您需要为您的类型编写 C 或 Objective-C 包装器,如下面的相关问题所述:Can I mix Swift with C++? Like the Objective - C .mm files

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-12
        • 2021-08-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多