静态库“Undefined Reference”到对象构造函数

时间:2014-02-27 16:23:50

标签: c++ constructor static-libraries game-engine static-linking

我遇到了这个问题,即使在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,全局外部和静态库。

2 个答案:

答案 0 :(得分:1)

没有LevelEditor::LevelEditor的定义。

您要么缺少源文件,要么忘记添加{}

编辑:或者,如果你的构造函数不做任何事情,只需删除声明。

答案 1 :(得分:0)

要么

1)缺少此功能:

LevelEditor();  // So now what does this do????  That's what is missing.

2)它没有丢失,但您没有将此函数所在的源模块或库添加到链接器设置。