簡體   English   中英

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

[英]Unresolved external symbol “public: <function_name>”

當我嘗試編譯時,出現此錯誤:

LNK2019:未解析的外部符號“公共:static void __cdecl A::FUNC_TEST(void)”

header如下:

#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(){}

和主要的function:

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

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

我錯過了一些基本的東西.. 到目前為止,我已經搜索了許多類似的問題,其中大多數以缺少 global_var 的聲明或 class 名稱的訪問說明符而告終。

真的會感謝你的幫助。

編輯:cmake 文件:

cmake_minimum_required(VERSION 3.17)
project(Ex1)

set(CMAKE_CXX_STANDARD 14)

add_executable(Ex1 main.cpp)
static void A::FUNC_TEST(){}

.cpp文件的定義中刪除static關鍵字。

另請參閱: https://en.cppreference.com/w/cpp/language/static

編輯:

如評論中所述,問題是A.cpp未包含在cmake中。

它應該是add_executable(Ex1 main.cpp A.cpp)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM