gpt4 book ai didi

c++ - 使用我的配置类 (C++) 无法解析的外部符号

转载 作者:行者123 更新时间:2023-11-30 03:56:19 24 4
gpt4 key购买 nike

我看了很多关于这个主题的话题,但没有一个对我有帮助。我仍然无法弄清楚我做错了什么。请帮忙!

我收到这个错误:

main.obj:-1: error: LNK2019: unresolved external symbol "public: __thiscall Config::Config(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??0Config@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function _main

这是我的代码。我从代码中剥离了所有内容以尝试解决这个问题;非常简单。

我的Config.h文件

#ifndef CONFIG_H
#define CONFIG_H

#include <string>

class Config{
public:
Config(std::string file_name);
};

#endif

这是我的 Config.cpp 文件

//Config class
#include "Config.h"
#include <string>

Config::Config(std::string file_name){
//Do stuff
}

这是我尝试使用它的地方

Config c("test");

即使在阅读了一个小时的文章和主题之后,我也无法弄明白这一点。

最佳答案

确保您实际上是在 Config.cpp 文件(或其等效目标文件)中进行链接。如果您只执行 文件。你会得到这样一个“未解决”的错误。

例如,文件:

Config.h :
#ifndef CONFIG_H
#define CONFIG_H
#include <string>
class Config{
public:
Config(std::string file_name);
};
#endif

Config.cpp:
#include "Config.h"
#include <string>
Config::Config(std::string file_name){}

Main.cpp:
using namespace std;
#include "Config.h"
int main() {
Config c("test");
return 0;
}

编译和链接两者都有效:

pax> g++ -o Main Main.cpp Config.cpp

但不执行 Config.cpp 会导致错误:

pax> g++ -o Main Main.cpp
/tmp/cc8GYPy2.o: In function `main':
Main.cpp:(.text+0x42): undefined reference to
`Config::Config(std::string)'
collect2: error: ld returned 1 exit status

当您使用命令行编译器时,这很容易辨别,因为从命令行可以立即看出发生了什么。

在 IDE 中,这可能不是那么简单,但通常归结为确保 CPP 源文件是项目的一部分并将被构建。

测试它是否正确的一种方法:从您的主 CPP 文件中注释掉当前有问题的行并将其添加到 Config.cpp:

int main() { return 0;}

如果它实际上正在构建,您应该会看到一个错误,提示重复的 main 符号。

关于c++ - 使用我的配置类 (C++) 无法解析的外部符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28553224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com