Форум программистов, компьютерный форум, киберфорум
Кроссплатфор­менная разработка
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 0
Регистрация: 21.07.2020
Сообщений: 17
1

wxWidgets OpenGL не удается создать екземпляр wxGLCanvas

24.04.2022, 20:12. Показов 5388. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!
3 дня мучаюсь с проблемой.
Создаю окошко при помощи wxWidgets и С++ и пытаюсь добавить туда компонент OpenGL

wxWidgets версии 3+
Freeglut (OpenGL 4.5)

Заголовочный файл
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#ifndef NANNABODY_H
#define NANNABODY_H
 
 
#include "NannaResources.h"
#include <freeglut.h>
#include <wx/glcanvas.h>
#include <wx/frame.h>
#include <wx/panel.h>
#include <wx/sizer.h>
 
class NannaBody : public wxFrame
{
    private:
        wxPanel *contextPanel;
        wxPanel *enterPanel;
        wxPanel *NannaUIPanel;
        wxBoxSizer *sizerVertical;
        wxBoxSizer *sizerHorizontal;
 
        wxGLCanvas*  m_GLCanvas;    //Объект есть, заголовок подключен
        wxGLContext* m_GLContext;
 
        wxPanel *SetupWXPanel(int width, int height, NannaResources &res);
 
    public:
        NannaBody(NannaResources &res);
};
 
#endif // NANNABODY_H
Реализация
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "NannaBody.h"
 
NannaBody::NannaBody(NannaResources &res)
: wxFrame(NULL, wxID_ANY, "Nanna", wxPoint(600,400))
{
    //Setting the Nanna windows base size
    SetSize(wxSize(res.getBodyWidth(), res.getBodyHeight()));
 
    //Setting Nanna body BG color
    SetBackgroundColour(*(res.getBodyBGColor()));
 
    //Setting window without border
    SetWindowStyle(wxMINIMIZE);
 
 
 
   int attribList[] =
    {
        WX_GL_RGBA,
        WX_GL_DOUBLEBUFFER,
        WX_GL_DEPTH_SIZE,     16,
        WX_GL_STENCIL_SIZE,   0,
 
#ifdef WXGLCANVAS_CORE_PROFILE
        WX_GL_CORE_PROFILE,       // New feature of wxWidgets 3.0.3
        WX_GL_MAJOR_VERSION,    3,
        WX_GL_MINOR_VERSION,    3,
#endif // WXGLCANVAS_CORE_PROFILE
 
        0, 0
    };
 
        m_GLCanvas  = new wxGLCanvas(this, wxID_ANY, attribList);
И после при компиляции получаю ошибку:

NannaBody.cpp|33|undefined reference to `wxGLCanvas::wxGLCanvas(wxWindow*, int, int const*, wxPoint const&, wxSize const&, long, wxString const&, wxPalette const&)'|

Хотя wxGLCanvas в заголовке #include <wx/glcanvas.h> существует и выглядит вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class WXDLLIMPEXP_GL wxGLCanvas : public wxGLCanvasBase
{
public:
    explicit // avoid implicitly converting a wxWindow* to wxGLCanvas
    wxGLCanvas(wxWindow *parent,
               const wxGLAttributes& dispAttrs,
               wxWindowID id = wxID_ANY,
               const wxPoint& pos = wxDefaultPosition,
               const wxSize& size = wxDefaultSize,
               long style = 0,
               const wxString& name = wxGLCanvasName,
               const wxPalette& palette = wxNullPalette);
 
    explicit
    wxGLCanvas(wxWindow *parent,
               wxWindowID id = wxID_ANY,
               const int *attribList = NULL,
               const wxPoint& pos = wxDefaultPosition,
               const wxSize& size = wxDefaultSize,
               long style = 0,
               const wxString& name = wxGLCanvasName,
               const wxPalette& palette = wxNullPalette);
Добавлено через 57 минут
Ребята решение нашел!
По факту: когда я начинал делать приложение оно включало только оконный GUI а когда я захотел применить OpenGL заголовок то я добавил #include <wx/glcanvas.h> а библиотеку с реализацией нет.

все решилось добавлением реализации:
Код
Project - > Build Options - Debug/Release - > Linker Setting  и добавил строку в Link Libraries (libwxmsw31u_gl.a)
Тему можно закрыть!
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2022, 20:12
Ответы с готовыми решениями:

Создать екземпляр из абстрактного класса
Привет всем, мне нужно в функции получить объект абстрактного класса, и создать новый объект этого...

компиляция программы DevCpp + wxWidgets + OpenGl
Привет всем. Я скачал исходники программы с sourceforge.net. Из описания программы выяснил что...

WxWidgets. Не удаётся прикрепить изображение к wxBitmapButton
Создал png с размером с кнопку. Вроде как, я сделал всё правильно: TB =...

Особенности OpenGL в wxWidgets (Почему не отображаются текстуры) ?
Всем здравствуйте. Раньше мои приложения были написаны исключительно с исп. GLUT. Однако решив, что...

В wxWidgets программе создать Отчет в MS Word 2003
Привет всем! Посоветуйте, пожалуйста, как можно создать отчет (файл .doc) содержащий данные из...

0
24.04.2022, 20:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2022, 20:12
Помогаю со студенческими работами здесь

Как увидить екземпляр класса на других формах?
Есть класс class pers { public: int age,health,eat,game,gigien,vibor; char *name1; ...

Ошибка: не удается выполнить задачу "GenerateResource", поскольку MSBuild не удается создать сервер задач
Занимаюсь переделкой своих проектов из VB6 в VB.NET, заодно и изучаю последний. Работаю в Visual...

Как сделать так, чтобы фрейм содержал екземпляр JDesktopPane?
Как сделать так, чтобы фрейм содержал екземпляр JDesktopPane (для отображения JInternalFrame-ов) и...

Подключение openGL в Qt. LNK1104: не удается открыть файл "glut32.lib"
При работе в Qt возникла ошибка при подключении библиотеки glut.

Не удается создать форму
пытаюсь выполнить это задание: выходит такое вот окно(см. прикр. картинку)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru