Undefined symbols for architecture x86_64 如何解决

连结时发生错误。原因是找不到源代码中使用的函数或全局变量。

错误有多种原因和解决方案

函数名称错误

tset(); 
test(); // 拼写正确

功能未定义

/* file.h */
extern void a(); // 生命
/* file.c */
void a() {}      // 定义(必须定义)

头文件不包括在内

// 正确的引入头文件
#include <sqlite3.h>
#include <zlib.h>

外部库无法链接

clang -lsqlite3 hello.c

C和C ++文件混合

/* file.hpp */
#ifdef __cplusplus
extern "C" {
  void foo();
  void bar();
}
#endif

模板实体不存在

/* file.hpp */
template<class T> T max(T a, T b);
/* file.cpp */
template<class T> T max(T a, T b) { return a < b ? b : a; }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容