【发布时间】:2017-12-13 08:20:55
【问题描述】:
我正在为我的 Swift 项目使用来自 https://www.surina.net/soundtouch/sourcecode.html 的 C++ 音频处理库
我还在 Projects-targets-build 阶段的编译源中包含了这些 cpp 文件。
当我尝试在桥接头中导入所有库头文件时
#import "SoundTouch.h"
编译时出错
Unknown type of name 'namespace' in STTypes.h
'stdexcept' file not found
我在头文件中使用命名空间
namespace soundtouch { ... }
我不能同时使用几个标准库,比如字符串
#include <stdexcept>
#include <string>
我在这里缺少什么?
【问题讨论】:
-
Swift cannot import C++: stackoverflow.com/questions/24042774/…, 你需要 C wrapper: stackoverflow.com/questions/35229149/….
-
是的,我知道 Swift 不能导入 C++,所以我必须导入 C++ 包装器的头文件,对吗?例如,我有 SoundTouch.cpp ,但我也有 SoundTouch.h 作为包装器。所以下一步是在我的桥接头中导入 SoundTouch.h 文件,以确保 Swift 可以使用它
-
如果您导入“SoundTouch.h”,那么“SoundTouch.h”不得(直接或间接)包含任何 C++。它必须是纯 C 接口。
-
你需要写一个不依赖“SoundTouch.h”的C接口。
-
所以,在这个例子中github.com/rspeyer/soundtouch 我不能直接将那些头文件用于我的桥接头?下一步是我必须创建一个新的目标 C 头文件来包装我的 C++ 文件 (SoundTouch.h) 的头文件?
标签: c++ objective-c swift xcode9 soundtouch