在 Xcode 项目中使用 C/C++ 库时未找到体系结构 x86_64 的符号
Symbol(s) not found for architecture x86_64 when using C/C++ library in Xcode project
我正在开发一个 Xcode 项目,该项目使用 C/C++ 库,我已将源代码导入到我的项目中。
我已经创建了对应的桥接头,并且正在使用我最近创建的测试方法来查看代码是否有效。构建项目时出现错误
Symbol(s) not found for architecture x86_64
Xcode中显示的错误的完整输出是这样的
我的部署目标是 iOS11,所以没有设备应该使用 32 位,但我收到与 32 位架构相关的错误。
MyApp-桥接-Header.h
//
// Use this file to import your target's public headers that you would like to expose to Swift.
//
#import "main.h"
头文件
#ifndef main_h
#define main_h
#include <stdio.h>
int my_print();
#endif /* main.h */
由于编译器抱怨找不到“_my_print”的定义,您可以
1) 检查链接库是否包含 _my_print 的定义
2) 如果您使用 XCODE UI 构建,请尝试检查路径中是否添加了所有源并且库是否完好无损
对我来说,这似乎是直截了当的链接问题和错误配置
在尝试了很多很多人声称它解决了与此类似的问题之后,我在不知不觉中想出了解决方案。
我之前的 main.h 文件就是这个
#ifndef main_h
#define main_h
#include <stdio.h>
int my_print();
#endif /* main.h */
用 extern "C"
围绕我的函数解决了它,现在我可以使用 Swift 与我的 C 和 C++ 库交互。现在 main.h
文件看起来像这样
#ifndef main_h
#define main_h
#include <stdio.h>
#ifdef __cplusplus
extern "C" {
#endif
int my_print();
#ifdef __cplusplus
}
#endif
#endif /* main.h */
我不是 100% 确定它是如何工作的,所以如果有人对它为什么起作用有合理的解释,我会非常高兴听到它。
我正在开发一个 Xcode 项目,该项目使用 C/C++ 库,我已将源代码导入到我的项目中。
我已经创建了对应的桥接头,并且正在使用我最近创建的测试方法来查看代码是否有效。构建项目时出现错误
Symbol(s) not found for architecture x86_64
Xcode中显示的错误的完整输出是这样的
我的部署目标是 iOS11,所以没有设备应该使用 32 位,但我收到与 32 位架构相关的错误。
MyApp-桥接-Header.h
//
// Use this file to import your target's public headers that you would like to expose to Swift.
//
#import "main.h"
头文件
#ifndef main_h
#define main_h
#include <stdio.h>
int my_print();
#endif /* main.h */
由于编译器抱怨找不到“_my_print”的定义,您可以 1) 检查链接库是否包含 _my_print 的定义 2) 如果您使用 XCODE UI 构建,请尝试检查路径中是否添加了所有源并且库是否完好无损
对我来说,这似乎是直截了当的链接问题和错误配置
在尝试了很多很多人声称它解决了与此类似的问题之后,我在不知不觉中想出了解决方案。
我之前的 main.h 文件就是这个
#ifndef main_h
#define main_h
#include <stdio.h>
int my_print();
#endif /* main.h */
用 extern "C"
围绕我的函数解决了它,现在我可以使用 Swift 与我的 C 和 C++ 库交互。现在 main.h
文件看起来像这样
#ifndef main_h
#define main_h
#include <stdio.h>
#ifdef __cplusplus
extern "C" {
#endif
int my_print();
#ifdef __cplusplus
}
#endif
#endif /* main.h */
我不是 100% 确定它是如何工作的,所以如果有人对它为什么起作用有合理的解释,我会非常高兴听到它。