C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
C++: unresolved external symbol thrown in Application.cpp (solution is at the end of the question for future readers)
所以我正在用C++(和GLFW,但这无关紧要(编写一个输入处理程序,并且有一个没有在头中实现的函数会导致此错误:
1>Input.obj : error LNK2001: unresolved external symbol "private: static class Input Input::instance" (?instance@Input@@0V1@A)
它在Application.cpp:中的名称如下
Input::GetInstance().Init(window);
Input::GetInstance().Update();
实现是这样的:
输入.h:
#ifndef INPUT_H_INCULDED
#define INPUT_H_INCLUDED
//Some includes
class Input
{
public:
static Input& GetInstance();
//some other non-static stuff
};
#endif
以及在Input.cpp中的实现:
Input& Input::GetInstance()
{
return instance;
}
instance
是Input的静态成员。
我有glew和glfw-libs,并包含在解决方案目录中一个名为Dependencies的文件夹中。我将它包含在项目属性的C/C++\General\Additional Include Directories下,还添加了$(SolutionDir(src,因为我已经将每个源文件都放在了src下。
然后,我将它们链接起来,在Linker\General\Additional Library Directories下,我添加了lib文件的位置,在Linkr\Input下,我将glfw3.lib、opengl32.lib和glew3s.lib添加到Additional Dependencies,最后,添加了GLEW_STATIC预处理器定义。这些是我在项目属性中所做的唯一更改,我使用Debug、x86配置。链接到源代码:
https://github.com/Andrispowq/Prehistoric-Engine---C-
编辑:对于任何未来的读者:我的问题是我必须写
Input Input::instance;
在代码的某个地方,在cpp文件中,因为实例是Input类的静态成员。所以,如果你有类似的问题,一定要检查你是否有静态变量,以及你是否已经像这样初始化了它们!
您的实例成员显然也需要是静态成员,原因有很多,例如为了实现singleton模式,尤其是因为您通过引用返回。顺便说一句,如果静态成员函数访问类的一些成员,那么该成员也需要是静态的。例外情况是,例如,如果您的静态方法采用的参数可以是类的特定实例,也可以强制转换为它,并且进一步使用它的参数,静态成员函数可以通过该已知实例访问或使用方法或数据成员,并将其作为参数传递给静态成员,但GetInstance不采用任何参数。我希望这能帮助你理解编译器告诉你的是什么,该编译器找不到符号实例。
- Project Euler问题4的错误解决方案
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 无法在问题解决方案中执行输出逻辑
- 最大的回文产品 - 程序未运行,编写解决方案但无法理解问题
- N-queen问题:无法弄清楚为什么我的解决方案不起作用
- 在Visual Studio 2017中使用c ++组件构建python解决方案时出现问题
- 此解决方案中生成更改的方法数量(自上而下)有什么问题?
- 错误LNK2005无法解决问题的解决方案
- 对于非常大的输入,缺少和重复 1..n 的数字数组.使用1..n系列特性的解决方案.溢出问题
- win10 尝试在我运行它时寻找问题的解决方案
- 人们如何提出按位问题的解决方案?
- 这个餐饮哲学家问题(dpp)的解决方案是如何工作的?互斥体和信号量
- "sum root to leaf numbers"问题的解决方案
- nqueens问题的C 递归解决方案无法正常工作
- 我的构建二叉树解决方案有什么问题?
- Windows上的模板有什么问题?解决方案是什么
- 商业申请许可问题和LIBPCAP应用程序的解决方案
- 在 SPOJ 上解决 JUICE 时,此解决方案有什么问题?
- 简单程序没有输出和崩溃.我的解决方案有什么问题
- 宿醉 spoj,解决方案中有什么问题