未定义的符号链接器turbo c

时间:2011-03-13 00:41:32

标签: c ide linker turbo-c

我在Turbo C ++ 3.0中编写了我自己的struct数据类型的队列,我无法构建我的项目,因为TC在尝试链接它时会向我显示未定义符号的错误消息。

我有以下 queue.h 文件

#include <stdio.h>
struct pcb{
    int *QueueBase;
    char id;
    int quantum;
};

typedef struct pcb far * ppcb;
typedef struct nodocola far * pnodocola;

struct nodocola{
    ppcb a;
    pnodocola ant;
};
void insertProcess(ppcb arg1);
ppcb getProcess();

我的文件 queue.cpp

#include<stdlib.h>
#include<stdio.h>
#include<cola.h>
struct pcb{
    int *QueueBase;
    char id;
    int quantum;
};

typedef struct pcb far * ppcb;
typedef struct nodocola far * pnodocola;

struct nodocola{
    ppcb a;
    pnodocola ant;
};

pnodocola base = (pnodocola)malloc(sizeof(pnodocola*));

void insertProcess(ppcb arg1){
    base->a = arg1;
    pnodocola tmp = (pnodocola)malloc(sizeof(pnodocola*));
    tmp = base;
    base = (pnodocola)malloc(sizeof(pnodocola*));
    base->ant = tmp;
}

ppcb getProcess(){
    pnodocola tmp = (pnodocola)malloc(sizeof(pnodocola*));
    tmp = base->ant;
    base = tmp->ant;
    return tmp->a;
}

我包含文件queue.h的文件:

#include<queue.h>
#include<dos.h>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#include<conio.h>
#include<iostream.h>

void interrupt myTimer(...);
void interrupt (*prev)(...);
ppcb actual = (ppcb)malloc(sizeof(ppcb*));
int ticks;
const quantum = 4;

void main()
{
    clrscr();
    prev=getvect(8);
    setvect(8,myTimer);
    getch();
    disable();
    setvect(8,prev);
    enable();
}

void interrupt myTimer(...)
{
    (*prev)();      
}

void init(...)
{
    actual->id='A';
    actual->quantum = quantum;
    insertProcess(actual);
}

错误:未定义的符号insertProcess(ppcb远)*

我正在使用Windows XP 32位的虚拟机工作。

编辑:对不起我有一个错误,当我写这个问题时,我将我的文件从cola.h重命名为queue.h,但是#include是正确的并且错误存在。

2 个答案:

答案 0 :(得分:3)

你实际上链接queue.cpp生成的目标文件有关吗?仅在主代码中包含头文件是不够的,在创建可执行文件时必须链接主代码和队列代码。

而且,顺便说一下,为什么你会使用这样一个古老的C实现,当更好,更现代,更便宜的选项可用?


为了让Turbo C编译多个源文件,我认为您必须创建一个项目,然后将C文件添加到该项目中。然后它将知道它必须编译并链接所有项目中的那些源文件。

如果您只有一个源文件(没有项目),它会将其视为仅包含该文件的项目。

答案 1 :(得分:0)

您说您包含“queue.h”但我在相关文件中的任何位置都看不到#include "queue.h"

相关问题