Xcode中的Swift和C ++桥接

时间:2018-06-07 19:32:51

标签: c++ swift xcode

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

我创建了简单的swift项目,只是添加了带有标题的c ++文件,Xcode为我创建了桥接标题。我在.cpp文件中初始化了基本函数,将原型编写为.hpp文件,并在桥接头中包含.hpp文件。当我开始输入.swift文件时,一切似乎都有效:我的cpp函数名称是在.swift文件中在适当的位置建议的,并且没有警告或错误。但是,当我试图建立这个项目时,我得到了以下内容: 架构x86_64的未定义符号:   " _get",引自:       _main in main.o

这是源代码:

    // 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

1 个答案:

答案 0 :(得分:0)

目前Swift和C ++之间没有互操作。你可以很容易地做ObjC和C,但是对于C ++,你将把你的C ++代码包装在ObjC中。