Sublimetext 3 c ++编译错误"对class :: constructor()的未定义引用

时间:2016-11-05 22:28:52

标签: c++ constructor linker sublimetext3

我有SublimeText 3的问题和对类构造函数的未定义引用。我认为问题在于链接。

我有main.cpp,Student.cpp和Student.h。

代码现在非常简单

main.cpp中:

    #include "Student.h"

    int main(int argc, char const *argv[])
    {
      Student student1;
      return 0;
    }

Student.h:

    #ifndef _S
    #define _S 

    #include <iostream>
    using namespace std;


    class Student
    {
      public:
          Student();
          ~Student();
    };

    #endif

结束Student.cpp

    #include "Student.h"

     Student::Student() {}
     Student::~Student(){} 

有什么建议我必须安装哪些软件包或要更改什么?

我将不胜感激任何帮助

玛利亚

编辑:

感谢您的回答!我通过创建一个Makefile解决了这个问题。 我必须安装GnuWin,我的#39;制作&#39;可以工作,然后在Sublime I选择BuildSystem - &gt;制作以及我的makefile的样子:

    NEW=5.1
    NEW2 = Student
    KOMP=g++
    FLAGS= -std=c++11 -Wall -g

    $(NEW):$(NEW).o $(NEW2).o 
        $(KOMP) $(FLAGS) $^ -o $@

    $(NEW).o:$(NEW).cpp 
        $(KOMP) -c $(FLAGS) $^ -o $@

    $(NEW2).o:$(NEW2).cpp $(NEW2).h
        $(KOMP) -c $(FLAGS) $^ 

    clean:
        rm -f *.o *.gch $(NEW)

    run: $(NEW)
        ./$(NEW)

    valgrind: $(NEW)
        valgrind -v ./$(NEW)

    gdb: $(NEW)
        gdb ./$(NEW)

之后我必须安装PackageResourceViewer来添加变种&#34;运行&#34;和其他(记得在&#34;变种&#34;)

中的每个{}之后添加

希望我的帖子也可以帮助别人:)

1 个答案:

答案 0 :(得分:0)

错误源自链接器,因为它无法查看构造函数的定义所在的位置。在Sublime Text 3中,有Build System&#34; logic&#34;像makefile一样。 (工具 - &gt;构建系统) 例如,Windows的测试cpp构建系统就是这样的想法:

{
    "shell_cmd": "\"%VS120COMNTOOLS%\\..\\..\\VC\\vcvarsall.bat\" amd64 && cl /nologo \"$file\"",
    "file_regex": "^(.*?)\\(([0-9+])(?:,([0-9+]))?\\)\\s+:\\s+(.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c, source.c++"
}

尝试创建一个&#34;构建系统&#34;这符合您的需求,然后构建您的源代码。