我遇到了这个问题,即使在main.h中包含对象构造函数之后我也无法调用它。错误消息是:
C:\Users\Espresso\Projects\AZRA\Debug/../src/main.cpp:7: undefined reference to `g_editor::LevelEditor::LevelEditor()'
main.cpp包含
的位置#include "main.h"
g_editor::LevelEditor g_levelEditor;
和main.h包含:
#include "g_editor/g_editor.h"
g_editor.h包含库中对象的所有头文件,其中包括levelEditor。 g_editor.h:
#ifndef G_EDITOR_H_
#define G_EDITOR_H_
#pragma once
#include "g_editor/Objects/editor_module.h"
#include "g_editor/Objects/utility_window.h"
#include "g_editor/Objects/prompt_window.h"
#include "g_editor/LevelEditor/LevelEditor.h"
extern g_editor::LevelEditor g_levelEditor;
#endif
最后,LevelEditor.h包含LevelEditor的构造函数和成员函数:
#ifndef G_LEVEL_EDITOR_H_
#define G_LEVEL_EDITOR_H_
#pragma once
#include "../Objects/editor_module.h"
#include "Modules/collisionGrid_module.h"
#include "Modules/HUD_module.h"
#include "Modules/IO_module.h"
#include "Modules/ledge_module.h"
#include "Modules/segment_module.h"
#include "g_level/g_level.h"
using namespace g_level;
namespace g_editor
{
class LevelEditor
{
private:
std::vector<editor_module*> modules;
void loadModules();
public:
static LevelEditor& get()
{
static LevelEditor sSingleton;
return sSingleton;
}
LevelEditor();
~LevelEditor() {};
我为文本墙道歉,我已经盯着这几天了,我已经尝试按优先顺序重新排序静态库(除了这个之外,它已经消除了所有问题。)是否存在设计缺陷我目前的设置?我正在使用sSingletons,全局外部和静态库。
答案 0 :(得分:1)
没有LevelEditor::LevelEditor
的定义。
您要么缺少源文件,要么忘记添加{}
。
编辑:或者,如果你的构造函数不做任何事情,只需删除声明。
答案 1 :(得分:0)
要么
1)缺少此功能:
LevelEditor(); // So now what does this do???? That's what is missing.
或
2)它没有丢失,但您没有将此函数所在的源模块或库添加到链接器设置。