c++ - 对现有类的 undefined reference

标签 c++ linker-errors undefined-symbol

#ifndef MIGRATINGUSER_H
#define MIGRATINGUSER_H
#include <iostream>
using namespace std;

class MigratingUser
{
        public:
        void populateUidAndGuid(string line);
        private:
        string uid;
        string guid; 
};
#endif

那是 header 定义,下面是 cpp 定义:

#include "MigratingUser.h"
using namespace std;

void MigratingUser::populateUidAndGuid(string line)
{
  //get the uid and guid
}

这是我遇到的错误。我该如何解决这个问题:

undefined reference to MigratingUser::populateUidAndGuid(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'

为了完整起见,我是这样使用这个类的:

MigratingUser muser;

muser.populateUidAndGuid(temp);

最佳答案

首先,我真的怀疑这是你遇到的错误,因为它的格式不正确。也许你有一些关于 std::basic_string<char, std::char_traits<char>, std::allocator<char> > 的话题,但除非您有一些……有趣的……代码,否则编译器不太可能吐出您发布的内容。以后,精确地复制粘贴,因为专家可以从您认为不重要的细节中获得数量惊人的信息。如果您编辑不当,可能会严重误导 StackOverflow 用户,使他们更难为您提供帮助。

现在,您的问题最可能的原因是您没有意识到编译 步骤和链接 步骤之间的区别。 “ undefined reference ”错误是一个链接器错误。

这意味着您的 header 是正确的 - 您的代码可以编译,但最后您没有将所有目标文件正确地放在一起 - 因此,g+ -c MigratingUser.cpp 的输出未包含在 g++ -c main.cpp 的输出中(或任何您命名为“使用”代码的名称)。

您可以像这样一次性完成编译和链接(对于简单项目):

g++ -o my_executable MigratingUser.cpp main.cpp

这将同时编译和链接这两个文件

关于c++ - 对现有类的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9106501/

相关文章:

c++ - 从模板继承 : scope error?

c++ - 将消息注入(inject) WPF 应用程序消息泵

c++ - 重复符号仅适用于 iOS 模拟器构建

c++ - 架构 x86_64 的 undefined symbol : "Shape::get_area()", 从 : votable for shape in shape. o 引用

c++ - 使用外部库编译

c++ - ruby 中使用 C++ .so 库的未解析符号

c++ - 如何在C++11中优雅地解决二义性声明?

c++ - 为什么我在这里需要复制构造函数

linux - 如何将静态库嵌入到共享库中?

gcc - CentOS:使用来自 devtoolset 的 GCC 4.7 导致错误地链接 libstdc++( undefined symbol )