C ++多个类导致架构错误

时间:2013-02-04 01:55:49

标签: c++ class importerror

我正在开展一个需要我使用各种课程的项目。 出于某种原因,每当我尝试编译时,我都会收到一条错误消息: Undefined symbols for architecture x86_64:

我最初正在开设一个类,我们可以在User中调用user.h这样的声明:

#ifndef USER_H
#define USER_H
...other include statements

class User
{
    public:
    User();
    public and private members and functions
};

#endif

方法的定义位于同一目录user.cpp

中的单独文件中

每当我尝试编译时,我都会收到错误,说构造函数和析构函数有未定义的符号。我在.cpp文件中定义了这两个,但我无法将错误消失。

我在main中包含了User类,其中包含以下内容:

#include "user.h"

我设法通过将user.cpp文件中的所有代码粘贴到user.h来解决此问题,但现在我遇到了其他不允许修改其代码的类的问题。

现在,我在gmlreader.h中有一个名为GMLReader的类,其中有一个我静态调用的方法。但是,即使我正在为我的main导入它,每当我尝试调用它时,我都会收到以下错误代码:

Undefined symbols for architecture x86_64:
  "GMLReader::read(char const*, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)", referenced from:
      _main in cchnzOEh.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

我正在使用以下内容进行编译,sn.cpp包含我的主要内容:

g++ -g -Wall -o sn sn.cpp

是否有任何理由会发生这样的错误,我该怎么办呢?

1 个答案:

答案 0 :(得分:1)

您还需要编译和链接user.cpp:

g++ -g -Wall -c user.cpp -o user.o
g++ -g -Wall -o sn sn.cpp user.o