未定义的引用...引用的东西

时间:2014-03-27 19:19:42

标签: c++ codeblocks undefined-reference

这个问题并不新鲜,但我老实说我不知道​​我在这里做错了什么。该程序应该采用一个表达式,修改它,调用一些汇编代码然后显示结果,但不知何故,在包含了包含所需分析函数的analyse.h文件之后,main似乎在访问所述函数时遇到了问题。 / p>

除了写#include "analyse.h"之外,我该怎么办?

(另外,“分析”部分不是我的,我无法修改它。我只能修改主体。)

提前谢谢!

错误:

undefined reference to `shuntingYard(char*, char*, int)'
undefined reference to `makeTree(char*)'
undefined reference to `deleteTree(Noeud*)'

主:

#include <iostream>

#include "analyse.h"

using namespace std;

int main()
{
    char entry[500];
    char* pEntry = entry;
    char polonaise[1000];
    char* pPolonaise = polonaise;
Noeud* root;

string rawEntry;

//read expression

cin >> rawEntry;

for(size_t i = 0; i < rawEntry.size() ; i++)
    entry[i] = rawEntry[i];

//convert tree

shuntingYard(pEntry, pPolonaise, rawEntry.size());

root = makeTry(pPolonaise);

//* ... */

deleteTry(root);

return 0;

}

Analyse.h:

#ifndef ANALYSE_H
#define ANALYSE_H

#include <stdio.h>
#include <string.h>
#include <stack>

#define TYPE_NOMBRE 0
#define TYPE_OPERATEUR 1
#define TYPE_VARIABLE 2

using namespace std;

struct Noeud
{
 int type;
 int valeur;
 Noeud* gauche;
 Noeud* droite; 
};
/* ... */
void shuntingYard(char *,char*, int);

/* ... */
Noeud* makeTree(char *);

/* ... */
void deleteTree(Noeud*);

#endif

1 个答案:

答案 0 :(得分:2)

您需要链接包含实现的代码(或库)。

如果您获得了实现的源代码(analyse.cpp),那么您可以编译并将其链接到您的可执行文件中。

如果为实现提供了共享对象/ dll,则需要链接.so / .lib。

如果您获得静态库,则需要链接.a / .lib。