首页 > 解决方案 > Xcode 中的 Swift 和 C++ 桥接

问题描述

错误 机器信息:macOS 10.13.5 Xcode 9.4 Swift 4.1 默认 c++ 编译器

我创建了简单的 swift 项目,并添加了带有标题的 c++ 文件,Xcode 为我创建了桥接头。我已经在 .cpp 文件中初始化了基本功能,将原型写入 .hpp 文件,并将 .hpp 文件包含在桥接头中。当我开始输入 .swift 文件时,一切似乎都正常工作:我的 cpp 函数名称在 .swift 文件中的适当位置被建议,并且没有警告或错误。但是,当我尝试构建这个项目时,得到以下结果:架构 x86_64 的未定义符号:“_get”,引用自:main.o 中的 _main

这是源代码:

    // main.swift
    import Foundation

    print("Hello, World!")

    var number = get();

    // cppBackend.cpp
    int get()
        {
        return 1;
        }

    // cppBackend.hpp
    int get();

    // test-Bridging-Header.h
    #include "cppBackend.hpp"


    //cppBackend.hpp second version
    #ifdef _cplusplus
    extern "C"
        {
    #endif


    #include <stdio.h>

    int get();

    #ifdef _cplusplu
        }
    #endif

标签: c++swiftxcode

解决方案


目前 Swift 和 C++ 之间没有互操作。您可以轻松地使用 ObjC 和 C,但对于 C++,您将在 ObjC 中包装您的 C++ 代码。


推荐阅读