未解析的外部符号“public: <function_name>”

Unresolved external symbol "public: <function_name>"

提问人:meowi 提问时间:1/13/2021 最后编辑:meowi 更新时间:1/13/2021 访问量:481

问:

当我尝试编译时,出现以下错误:

LNK2019:未解析的外部符号“public:静态虚__cdecl A::FUNC_TEST(无效)”

标题如下:

#pragma once
class A
{    
public:
    static A global_var;

private:
    A();
    virtual ~A();
    A(const A&) = delete;
    A& operator=(const A&) = delete;

public:
        static void FUNC_TEST();
};

而源文件如下:

#include "A.hpp"
A A::global_var; 

A::A(){}

A::~A(){}

static void A::FUNC_TEST(){}

主要功能:

#include <iostream>
#include "A.hpp"

int main() {
    
    A::FUNC_TEST();
    
    return 0;
}

我错过了一些基本的东西。 到目前为止,我已经搜索了许多类似的问题,其中大多数都以缺少global_var声明或类名的访问说明符而告终。

真的会感谢你的帮助。

编辑: CMAKE 文件:

cmake_minimum_required(VERSION 3.17)
project(Ex1)

set(CMAKE_CXX_STANDARD 14)

add_executable(Ex1 main.cpp)
c++ c++14 静态方法 未解析外部

评论


答:

3赞 0RR 1/13/2021 #1
static void A::FUNC_TEST(){}

从文件的定义中删除关键字。static.cpp

Смотритетакже: https://en.cppreference.com/w/cpp/language/static

编辑:

如评论中所述,该问题未包含在 中。A.cppcmake

它应该是add_executable(Ex1 main.cpp A.cpp)

评论

0赞 0RR 1/13/2021
@meowi你是如何构建你的主程序的,没有被包括在内。A.cpp
0赞 meowi 1/13/2021
它确实是在 cmake 文件中设置的(其他非静态函数工作正常)
0赞 0RR 1/13/2021
@meowi 你目前给出的例子对我来说是不可复制的。您能否编辑您的帖子以添加您用于上述演示的文件。因为您的问题可能与您的 cmake 设置有关CMakeLists.txt
0赞 meowi 1/13/2021
添加了 cmake 文件(感谢您如此努力地帮助我)
1赞 meowi 1/13/2021
哇,这就是问题所在 - 没有在 CMake 中包含源文件......可怕的菜鸟错误