我的C代码有一个严重的问题,我似乎就是不能编译它,而且我真的不知道为什么。
我试着在网上搜索,但找不到解决问题的方法,你有什么想法吗?
耽误您时间,实在对不起!
Undefined symbols for architecture x86_64:
  "_Insert", referenced from:
      _InsertNode in part1.o
     (maybe you meant: _InsertNode)
  "_Create", referenced from:
      _findShortestPaths in part1.o
  "_DeleteMin", referenced from:
      _findShortestPaths in part1.o
  "_decreaseKey", referenced from:
      _findShortestPaths in part1.o
  "_GetMin", referenced from:
      _findShortestPaths in part1.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [part1] Error 1part1.c中的片段
#include "limits.h"
#include "pegBinaryHeap.h"
void InsertNode(int distance, Node* node, PriorityQueue PQ) {
  ...
  Insert(*item, PQ);
}
...
int* findShortestPaths(Graph *graph, int start) {
  ...
  //Priority queue ordered by distance
  PriorityQueue pq = Create(graph->MaxSize);
  for(int i = 0; i < graph->MaxSize; i++) {
    ...
  }
  //While the queue isn't empty:
  while((currentPqItem=GetMin(pq)) != NULL) { 
    ...
    DeleteMin(pq);
      //for each node accesable from currentNode
    List *currentNeighbour = currentNode.outlist;
    while(currentNeighbour!=NULL) {
      ...
        decreaseKey(currentNode.id, newDistance, pq);
    } // end for
  }// end while
}
int main(int argc,char *argv[])
{
  Graph mygraph;
  return 0;
}和它似乎正在抱怨的.h文件
#include "graph.h"
struct HeapStruct;
typedef struct HeapStruct *PriorityQueue;
typedef struct {
  int distance;
  Node *node;
} QueueType;
PriorityQueue Create( int MaxSize );
void Destroy( PriorityQueue H );
int Insert( QueueType Item, PriorityQueue H );
QueueType DeleteMin( PriorityQueue H );
QueueType* GetMin( PriorityQueue H );
void decreaseKey(int nodeId, int value, PriorityQueue H);发布于 2012-04-13 23:46:10
我会尝试创建一个显示相同错误的简约示例。我们缺少太多信息来帮助您诊断此问题。其他文件中的代码和实际的编译命令(不仅仅是Makefile的一部分,而是实际的命令)可能是这个问题的根源。
(是的,这应该是一条评论,而不是答案,但由于某种原因,我无法对问题发表评论)
https://stackoverflow.com/questions/10143784
复制相似问题