C++ C++;尝试使用外部变量时发生LNK2001错误
我正在尝试创建一个实用程序类,我可以在我的程序中使用它,比如日志记录、调试等 在爪哇中,我知道我可以通过声明变量和函数<强>静态< /强>来做它,因为我在C++中读了更多的方法,我应该使用<强> ExtNe>强,被命名空间包围,不要填充太多的文件。 在尝试初始化构造函数类中的外部变量时, 我收到以下错误: application.cpp.obj:错误LNK2001:未解析的外部符号“类” 应用程序*Lib::app“ application.cpp.obj:错误LNK2001:未解析的外部符号“类” 图形*Lib::图形“ 这对我来说没什么意义,但有一个链接问题? 我有以下两个文件:C++ C++;尝试使用外部变量时发生LNK2001错误,c++,linker,namespaces,extern,lnk2001,C++,Linker,Namespaces,Extern,Lnk2001,我正在尝试创建一个实用程序类,我可以在我的程序中使用它,比如日志记录、调试等 在爪哇中,我知道我可以通过声明变量和函数静态< /强>来做它,因为我在C++中读了更多的方法,我应该使用 ExtNe>强,被命名空间包围,不要填充太多的文件。 在尝试初始化构造函数类中的外部变量时, 我收到以下错误: application.cpp.obj:错误LNK2001:未解析的外部符号“类” 应用程序*Lib::app“ application.cpp.obj:错误LNK2001:未解析的外部符号“类” 图形*
// lib.h
#ifndef LIB_H
#define LIB_H
#include "graphics.h"
#include "application.h"
namespace Lib {
extern Application *app;
extern Graphics *graphics;
}
#endif //LIB_H
// application.cpp
#include "include/application.h"
#include "include/lib.h"
.
Application::Application(Listener* listener, Configuration* config, Graphics* graphics) {
.
.
// Our library for graphics
this->graphics = graphics;
.
.
// creating the environment utils
Lib::app = this;
Lib::graphics = graphics;
.
.
}
extern
意味着在其他地方定义变量。在您的情况下,必须在lib.cpp中包含以下内容:
namespace Lib {
Application *app;
Graphics *graphics;
}
也就是说,您的设计值得怀疑:
在Java中,我知道我可以通过声明变量和
静态功能
<>你可以在C++中做同样的事情,在这种情况下它会更有意义。非常感谢你,尤金!我读到一些静态创建每个静态变量的文件副本,这不是我希望的关键字静态在C++中有很多含义。您所说的是文件作用域和函数作用域静态。我提到了静态类成员,其含义与Java中的相同。