Undefined symbols for architecture x86_64 如何解决

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

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

  • 函数名称错误
  • 功能未定义
  • 头文件不包括在内
  • 外部库无法链接
  • C和C ++文件混合
  • 模板实体不存在

函数名称错误

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

功能未定义

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

头文件不包括在内

// 正确的引入头文件
#include 
#include 

外部库无法链接

clang -lsqlite3 hello.c

C和C ++文件混合

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

模板实体不存在

/* file.hpp */
template T max(T a, T b);
/* file.cpp */
template T max(T a, T b) { return a < b ? b : a; }

你可能感兴趣的:(Undefined symbols for architecture x86_64 如何解决)