C++ 无法链接最基本的应用程序 [重复]

C++ Failing to link the most basic application [duplicate]

提问人:Werem 提问时间:8/18/2018 最后编辑:Ben VoigtWerem 更新时间:8/18/2018 访问量:47

问:

我正在制作一个着色器解析程序,我想将一些代码片段移动到不同的类中,然后我得到了很多链接器错误,开始调试它们并试图尽可能基本地消除它们一个接一个,我删除了所有代码,我不知道这只是我累了还是我的 Visual Studio 有问题,但是这个法典:

main.cpp

#include "Shader.h"

int main()
{
    Shader shader;
    shader.DoStuff();

    return 0;
}

着色器.h

#pragma once
class Shader
{
public:

    void DoStuff();
};

着色器.cpp

#include "Shader.h"
void Shader::DoStuff()
{
}

生成链接器错误:

Severity    Code    Description Project File    Line    Suppression State
Error   LNK2019 unresolved external symbol "public: void __thiscall Shader::DoStuff(void)" (?DoStuff@Shader@@QAEXXZ) referenced in function _main   ShaderParser

比如,我是否忘记了什么或发生了什么?

C++ 链接 链接器错误未 解决外部

评论

0赞 Polb 8/18/2018
stackoverflow.com/questions/17769977/......
2赞 Jesper Juhl 8/18/2018
请显示您的编译/链接命令行。
0赞 Werem 8/18/2018
我只是添加了/VERBOSE
0赞 Jesper Juhl 8/18/2018
@Werem “我只是添加了 /VERBOSE” - 可能是这样,但您能告诉我们实际的最终命令行最终是什么吗?在您的案例中,编译器/链接器实际上是如何调用的?我不在乎你在某些 GUI 中做了什么,我想看看编译器实际上是如何被调用的,而不管构建系统等如何。只需向我们展示实际使用的命令行即可。

答:

-1赞 asdf 8/18/2018 #1

它已经通过了编译,可以在我的电脑Visual Studio上正常运行,没有问题。所以:

  1. 您最好检查编译选项参数。
  2. 这 3 个文件是否作为写入的命令放在正确的路径(文件夹)中。
  3. “#pragma 一次”不标准,尽量改成“#ifndef #define...... #endif”

当 *.h 和 *.cpp 对不对应时,通常会发生此问题。