[英]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.