Swift 使用静态库编译的源代码作为 Objective-C++
Swift using static library compiled sources as Objective-C++
我是 Swift 的新手。最近我遇到了一个问题有一个静态库编译源代码作为Objective-C++。例如,.h 文件中的"导入",如下所示:
#import <Foundation/Foundation.h>
#import <map>
@interface CppLib : NSObject
@end
现在我创建了一个新的 swift 项目,包括静态库项目创建的 .a 和 .h 文件。添加一个名为"Swift_CppLib-Bridging-Header.h"的新桥接文件:
#ifndef Swift_CppLib_Bridging_Header_h
#define Swift_CppLib_Bridging_Header_h
#import "CppLib.h"
#endif
然后CMD + B,构建项目失败:
/Users/air/Somnus/CodeDemo/Swift_CppLib/Swift_CppLib/Swift_CppLib-Bridging-Header.h:12:9: note: in file included from /Users/air/Somnus/CodeDemo/Swift_CppLib/Swift_CppLib/Swift_CppLib-Bridging-Header.h:12:
#import "CppLib.h"
^
/Users/air/Somnus/CodeDemo/Swift_CppLib/Swift_CppLib/Lib/CppLib.h:10:9: error: 'map' file not found
#import <map>
^
<unknown>:0: error: failed to import bridging header '/Users/air/Somnus/CodeDemo/Swift_CppLib/Swift_CppLib/Swift_CppLib-Bridging-Header.h'
谁可以帮助我解决这个问题?感谢您的任何提示!
你需要确保在导出到 swift 的标头中没有 c++ 或 objective-c++ 可见。苹果明智地决定不支持 swift 中的 c++。在我看来,这对他们来说是一个糟糕的决定......但我不在那里工作,所以没有发言权:)
因此,不幸的是,您需要将库包装在薄的obj-c包装器中...或者(恕我直言)做明智的事情,避免像瘟疫一样迅速。它只是 objective-c 上一个复杂的语法糖衣,不幸的是,如果不完全理解 objective-c,你就无法用 swift 编写一个严肃的应用程序。
</rant>
:)
相关文章:
- 在Linux中哪里可以找到互斥、未来等的源代码
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 难以理解某些人解决IOI问题的源代码
- 使用g++编译hdf5源代码
- 如何将数组从Objective-C发送到C++函数
- 如何使用C++读取另一个程序中的源代码输出
- Poco FindMySql.cmake 无法找到 MySQL 源代码
- 更改命令行 qt5 源代码构建配置的正确/快速方法
- C++出现控制台错误.我无法识别源代码的问题
- Qt Quick,如何更改 Ui 源代码?
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 从macOS Catalina上的源代码编译LLVM(如何解决未找到"stdio.h")
- 如何使用QT创建器获取网页源代码?
- 从源代码构建 gRPC C++
- 在 Objective-C++ -> EXC_BAD_ACCESS Error 中使用"new"关键字
- 如何使用我构建的库,而不会从源代码出错,但不为我自己的项目编译?
- Mac Snow Leopard 上的 Qt 5.3.2:ld:在架构x86_64 [clang、Objective-C
- Objective-C源代码和clang -rewrite-objc C++代码之间有什么关系?
- Swift 使用静态库编译的源代码作为 Objective-C++