尝试从main.c中的头文件使用功能时,获取体系结构x86_64的未定义符号

时间:2019-03-10 19:48:16

标签: c header

我有3个文件:

  • main.c用于测试table.h中的所有功能
  • table.c用于实现其头文件。
  • table.h是头文件。 我已经在main.c中包含了table.h,但是在编译时却出现了这个错误:
  

Undefined symbols for architecture x86_64: "_insertItem", referenced from: _main in main-788b5b.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) Quocs-MBP:A3 jarvis$

#ifndef _TABLE_H
#define _TABLE_H

//---------------------------------------------------------------------        
--------
// CONSTANTS AND TYPES
//--------------------------------------------------------------------- 
--------
#ifndef _BOOL_
typedef enum BOOL { false, true } bool;
#endif
//--------------------------------------------------------------------- 
--------
// PROTOTYPES
//--------------------------------------------------------------------- 
--------

// add an element to the table
// Return TRUE if the item is in the table
// Return FALSE if the item is *not* in the table
bool insertItem( int item );
// removes the int from the table
bool removeItem( int item );
// empty the table so that we clear all memory and can start a fresh 
table
void clearTable( );
// tells us whether or not the given item is in the table
bool search( int item );
// table iterators
// Return TRUE if item was assigned
// Return FALSE if item was *not* assigned
bool firstItem( int * const item );
bool nextItem( int * const item );

#endif

我在table.c中进行了测试,并且每个测试都是正常的,因此我不在此处进行测试。以下是main.c的第一部分:

#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
#include "table.h"

//typedef enum BOOL { false, true } bool;                                               

// Linked list node definition                                                          
typedef struct Node node;

这是我尝试使用功能insertItem(int Item)的地方:

  //TEST insertItem(int Item) function                                                  

  //Case: Insert to an empty table                                                      
  //insertItem(0);                                                                      
  if(top ==NULL){
    printf("THE TABLE IS EMPTY\n");
  }
  insertItem(10);
  print();


  return 0;
}

很抱歉,如果我的帖子含糊或无效,我是StackOverflow的新手。谢谢。

1 个答案:

答案 0 :(得分:0)

我已经看到了。

make clean; make

您正在尝试使用上一次x86构建的build输出垃圾桶为x64构建。效果不太好。