CodeRunner--无法编译多个源c ++程序

时间:2016-11-11 22:00:14

标签: c++ coderunner

我对c ++编程和编程非常陌生。最近我们一直在我们的课程中添加头文件和其他源文件(实现)。我已经尝试编写最简单的程序,以确保我理解将多个文件包含在一个程序中的基础知识,但它们不会编译,从而给我链接器错误。

即:

Undefined symbols for architecture x86_64:
  "FooBar::printSomething()", referenced from:
      _main in main-d52d70.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

当我使用“g ++ main.cpp implementation.cpp”在终端中编译时,一切正常。

我的代码:

的main.cpp

#include "header.h"

int main()
{
    FooBar object;
    object.printSomething();
    return 0;
}

header.h

#ifndef _Header_h_
#define _Header_h_

#include <iostream>

using namespace std;

class FooBar{
    public:
        void printSomething();

    private:
        string helloWorld;
};

#endif

implementation.cpp

#include "header.h"

void FooBar::printSomething(){
    helloWorld = "Hello World!\n";
    cout << helloWorld;
}

我喜欢CodeRunner,但这真让我感到沮丧。

谢谢!

1 个答案:

答案 0 :(得分:0)

对于有类似问题的任何人我找到了解决方案

我错误地使头文件中的类头文件和实现文件名称不同。

header.h应命名为 foobar.h

implementation.cpp应命名为 foobar.cpp

当我将文件的名称更改为foobar.h和foobar.cpp时,编译的程序在CodeRunner中运行得很好。

我的教授告诉我,一个类的头文件及其实现文件应该具有不同文件类型的相同名称,即x.cpp和x.h。