Статическая библиотека «Неопределенная ссылка» на конструктор объекта

0

У меня возникла эта проблема, когда я не могу вызвать конструктор объекта в main.cpp даже после того, как он был включен в 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, глобальные externs и статические библиотеки.

  • 1
    Где находится реализация (не объявление) конструктора g_editor :: LevelEditor?
Теги:
static-libraries
constructor
game-engine
static-linking

2 ответа

1
Лучший ответ

Нет определения LevelEditor::LevelEditor.

У вас либо отсутствует исходный файл, либо вы забыли добавить {}.

Изменение: или, если ваш конструктор ничего не делает, просто удалите объявление.

  • 0
    Боже мой, я не могу в это поверить. Спасибо
0

Или

1) Эта функция отсутствует:

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

или

2) его не хватает, но вы не добавили исходный модуль или библиотеку, где эта функция находится в настройках компоновщика.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню