c++ - 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
解决方案
目前 Swift 和 C++ 之间没有互操作。您可以轻松地使用 ObjC 和 C,但对于 C++,您将在 ObjC 中包装您的 C++ 代码。
推荐阅读
- user-interface - 画布上的 Unity 粒子效果
- php - 选择值所在的数组
- ios - 如何使用 UICollectionViewController 设置具有多个部分的 1 标头
- javascript - 如何在进行另一个函数调用时停止执行 javascript/jquery
- python-3.x - 在python中设置请求刷新率
- node.js - 如何让快递服务器一次只服务一个 API 请求
- docker - 自定义使用 docker stack deploy 创建的 docker 服务名称
- haskell - 在 Liquid Haskell 中定义度量
- servicestack - 使用 Castle.Windsor 将 ServiceStack 从 4.x 升级到 5.7
- machine-learning - 在 Keras 中,什么是“密集”层和“辍学”层?