使用Code :: Blocks IDE在C中使用未定义的引用错误

时间:2012-11-04 00:24:27

标签: c reference undefined codeblocks

我正在尝试设置一些.c文件,以便在我开始变大时更容易找到它。我将在程序中使用SDL调用,因此包含。

以下是我的main.cpp现在的样子:

#include <stdio.h>
#include <SDL.h>
#include <SDL_gfxPrimitives.h>
#include <SDL_ttf.h>
#include "WriteText.h"

int main(int argc, char *argv[])
{
int i =0;
i = b();

return 0;
}

在我的WriteText.c中,我有:

#include "WriteText.h"

int b(void)
{
return 3;
}

最后我的WriteText.h:

#ifndef WRITETEXT_H_INCLUDED
#define WRITETEXT_H_INCLUDED

int b(void);

#endif // WRITETEXT_H_INCLUDED

尝试编译它,我得到一个未定义的'b()'引用。我不知道为什么会发生这种情况,我在一些基本的示例代码中实践它,并且每个工作都很好,但是当我实际使用它时,我遇到了这样的错误。

3 个答案:

答案 0 :(得分:4)

问题是您没有将WriteText.c链接到可执行文件中。如果您提供了有关如何创建可执行文件的更多信息,我们可能会提供更好的帮助。

答案 1 :(得分:0)

有可能你的编译没有使用writetext对象文件。假设* nix和gcc,你的makefile应该类似于:

all: myprog

myprog: myprog.o writetext.o
    gcc -o $@ $^

myprog.o: myprog.cpp

writetext.o: writetext.cpp

答案 2 :(得分:0)

我想出了我的问题,我的主文件是.cpp并使用了CPP编译器(因为它是一个SDL项目),但我添加的新文件是.c并使用了C编译器,当我添加了一个新的.cpp文件只需将我的代码复制粘贴到其中,一切顺利。

(我不确定在.cpp文件中编写C代码是不是“坏形式”,但如果我打算使用SDL,我想这是唯一的方法。)