VS 2022:调用在 class 定义之外定义的方法时出现 "Unresolved external" 错误
VS 2022: "Unresolved external" error when calling methods that are defined outside of the class definition
所以,我已经尝试 运行 在 Visual Studio 2022 年可以想象到的最简单的 C++ 程序:
main.cpp:
#include "TestClass.h"
int main() {
TestClass().testMethod();
}
TestClass.h:
#pragma once
class TestClass {
public:
void testMethod();
};
TestClass.cpp:
#include "TestClass.h"
inline void TestClass::testMethod() {
}
但出于某种原因,除了链接器错误,我什么也没得到:
error LNK2019: unresolved external symbol "public: void __cdecl TestClass::testMethod(void)" (?testMethod@TestClass@@QEAAXXZ) referenced in function main
我知道 Stack Overflow 上有很多问题都在讨论这个特定的错误,但我找不到任何适用于我的情况的问题,除了 this one,它没有回答。
所有文件都包含在项目中(所有内容都在 Visual Studio 中生成),我没有从 IntelliSense 收到任何警告,每个文件都可以自己编译(使用 Ctrl+F7)
我不知道发生了什么,希望得到任何帮助。
在 C++ 中 inline
函数必须在调用它们的每个翻译单元中都存在它们的主体。
Removing inline doesn't change anything
尝试测试一下。我不是唯一证明 inline
导致 lnk 错误的人。作为
Sedenion 说,这是一个使用错误。
我建议向 Developer Community 报告此错误行为并在此线程中发布 link。
所以,我已经尝试 运行 在 Visual Studio 2022 年可以想象到的最简单的 C++ 程序:
main.cpp:
#include "TestClass.h"
int main() {
TestClass().testMethod();
}
TestClass.h:
#pragma once
class TestClass {
public:
void testMethod();
};
TestClass.cpp:
#include "TestClass.h"
inline void TestClass::testMethod() {
}
但出于某种原因,除了链接器错误,我什么也没得到:
error LNK2019: unresolved external symbol "public: void __cdecl TestClass::testMethod(void)" (?testMethod@TestClass@@QEAAXXZ) referenced in function main
我知道 Stack Overflow 上有很多问题都在讨论这个特定的错误,但我找不到任何适用于我的情况的问题,除了 this one,它没有回答。
所有文件都包含在项目中(所有内容都在 Visual Studio 中生成),我没有从 IntelliSense 收到任何警告,每个文件都可以自己编译(使用 Ctrl+F7)
我不知道发生了什么,希望得到任何帮助。
在 C++ 中 inline
函数必须在调用它们的每个翻译单元中都存在它们的主体。
Removing inline doesn't change anything
尝试测试一下。我不是唯一证明 inline
导致 lnk 错误的人。作为
Sedenion 说,这是一个使用错误。
我建议向 Developer Community 报告此错误行为并在此线程中发布 link。