提问人:meowi 提问时间:1/13/2021 最后编辑:meowi 更新时间:1/13/2021 访问量:481
未解析的外部符号“public: <function_name>”
Unresolved external symbol "public: <function_name>"
问:
当我尝试编译时,出现以下错误:
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)
答:
3赞
0RR
1/13/2021
#1
static void A::FUNC_TEST(){}
从文件的定义中删除关键字。static
.cpp
Смотритетакже: https://en.cppreference.com/w/cpp/language/static
编辑:
如评论中所述,该问题未包含在 中。A.cpp
cmake
它应该是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 中包含源文件......可怕的菜鸟错误
评论