gpt4 book ai didi

c++ - 具有极其简单类的未解析外部符号(VS2010)

转载 作者:行者123 更新时间:2023-11-30 04:22:38 25 4
gpt4 key购买 nike

我坚信这是每个​​活着的人都能完美完成的极其基本的事情,但不知何故它对我不起作用。通过 Google 找到的常见问题解答和许多其他主题/问题并未为我解决此问题。

情况如下:我有一个Visual Studio 2010项目。此项目位于 Visual Studio 2010 解决方案中。该项目有以下文件:

添加.h:

class Adder {
public:
static int add(int i1, int i2);
};

添加.cpp:

class Adder {
public:
static int add(int i1, int i2) {
return i1 + i2;
}
};

主要.cpp:

#include "add.h"

int main() {
Adder::add(5, 6);
return 0;
}

当尝试运行这段代码时,这对我来说看起来很基本,但我收到以下链接器错误:

main.obj : error LNK2019: unresolved external symbol "public: static int __cdecl Adder::add(int,int)" (?add@Adder@@SAHHH@Z) referenced in function _main

据我所知,这意味着链接器无法找到 Adder::add() 的实现。但是,这些文件位于完全相同的项目中,生成的 .obj 文件位于完全相同的文件夹中,而且我读过的关于类和头文件主题的每一个教程都告诉我这应该有效。

到目前为止,我已经尝试了以下可能的解决方案:

  • 将项目自己的文件夹添加到 additional includes/dependencies/sources/whatevers
  • 为各种事物添加外部标识符
  • 使用单独的命名空间
  • 其他各种小调整,希望它们能奏效

所以我想我的问题可以归结为:如何让链接器注意到 add.cpp 文件?感谢任何帮助,我已经花了几个小时在这上面但没有成功,而这对我来说似乎是一件非常基本的事情。

最佳答案

下面定义了一个全新的类

//add.cpp:
class Adder {
public:
static int add(int i1, int i2) {
return i1 + i2;
}
};

与标题中的不同,仅适用于此翻译单元(“add.cpp”)。

它应该包含的是:

//add.cpp
#include "add.h"
int Adder::add(int i1, int i2) {
return i1 + i2;
}

这实现了头文件 add.h 中类中定义的方法。

关于c++ - 具有极其简单类的未解析外部符号(VS2010),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13714301/

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