Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;多个类会导致架构错误_C++_Class_Importerror - Fatal编程技术网

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

C++ C++;多个类会导致架构错误,c++,class,importerror,C++,Class,Importerror,我正在从事一个需要使用各种类的项目。 出于某种原因,每当我尝试编译时,都会出现一个错误,上面写着: 架构x86\u 64的未定义符号: 我最初正在编写一个类,我们可以称之为User,它在User.h中有这样一个声明: #ifndef USER_H #define USER_H ...other include statements class User { public: User(); public and private members and functions

我正在从事一个需要使用各种类的项目。 出于某种原因,每当我尝试编译时,都会出现一个错误,上面写着:
架构x86\u 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
文件中定义了这两个,但我无法消除错误

我主要包括以下用户类:

#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

出现这种错误有什么原因吗?我如何着手修复它?

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

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

我以前经常遇到这个错误,请确保您将正确类型的变量传递给函数您的目标体系结构确实是64位的吗?可能是一些文件编译为32位,而另一些文件编译为64位。另外,请向我们展示
#include
语句以及您是如何编译代码的。您没有展示相关代码,请展示真实的代码我以前见过这个问题,我认为它与体系结构无关。这很像一个未解决的外部问题。似乎找不到GMLReader::read。谢谢。习惯于有一个Makefile,而不必提供所有这些参数,但现在一切都正常了
g++ -g -Wall -c user.cpp -o user.o
g++ -g -Wall -o sn sn.cpp user.o