当我尝试调用我的 C++ 实现文件中的函数时(在 header 中使用 #ifdef __cplusplus extern "C"{} 技巧标记为 C 兼容),我收到错误:
“使用未解析的标识符,'helloWorld()'”
我只是通过将 cpp 和头文件添加到我的项目并在询问我是否要创建桥接 header 时单击“确定”来创建桥接 header 。我在桥接 header 中#including“test.h”,里面有函数声明,但出于某种原因,Swift 就是看不到这个函数。
最奇怪的是,我创建了一个新项目并执行了完全相同的过程,并且调用 helloWorld() 工作正常,所以这是关于现有项目的一些事情,我试图将 cpp 文件添加到它不起作用.
然后我假设这是一个build设置问题,并且我一定是在某些地方弄乱了它们,可能是在我尝试导入静态 C/CPP 库时(我已经删除了,但我为它更改的一些build设置可能会保留)。
那么,是否有任何我应该知道的build设置可以解决这个问题?或者有没有办法将我的build设置完全重置为默认值(即使这意味着我必须重新创建桥接 header 以使桥接 header build设置恢复原位)?
感谢您的所有帮助!
詹姆斯
---编辑---
这是我的 cpp header :
这是我的cpp实现文件:
这是我的桥接头:
这里是 Swift 项目的相关部分:
这里是设置桥接头的build设置:
最佳答案
好的 - 这已经解决了。问题是桥接头需要从常规目标和测试目标中实现,这是在我现有的项目中,因为我正在进行单元测试。
我只是进入了测试目标的build设置并添加了适当的 Objective-C Bridging Header,然后一切正常。
希望对大家有帮助!
关于c++ - 在 XCode 中桥接 C++ 和 Swift,正确的build设置是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29377075/