Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: undefined reference to, codebloks
Форум на CrossPlatform.RU > Библиотеки > wxWidgets
OLEGVT
Всем привет! У меня при построении проекта выдает вот такие ошибки:

C:\uir\pr\cb\test6\test6Main.cpp||In constructor 'TestGLCanvas::TestGLCanvas(wxWindow*, wxWindowID, const wxPoint&, const wxSize&, long int, const wxString&)':|
C:\uir\pr\cb\test6\test6Main.cpp|79|warning: 'wxGLCanvas::wxGLCanvas(wxWindow*, const wxGLCanvas*, wxWindowID, const wxPoint&, const wxSize&, long int, const wxString&, const int*, const wxPalette&)' is deprecated (declared at C:\wxWidgets-3.0.0\include/wx/msw/glcanvas.h:119) [-Wdeprecated-declarations]|
C:\uir\pr\cb\test6\test6Main.cpp||In constructor 'TestGLCanvas::TestGLCanvas(wxWindow*, const TestGLCanvas*, wxWindowID, const wxPoint&, const wxSize&, long int, const wxString&)':|
C:\uir\pr\cb\test6\test6Main.cpp|86|warning: 'wxGLContext* wxGLCanvasBase::GetContext() const' is deprecated (declared at C:\wxWidgets-3.0.0\include/wx/glcanvas.h:136) [-Wdeprecated-declarations]|
C:\uir\pr\cb\test6\test6Main.cpp|86|warning: 'wxGLCanvas::wxGLCanvas(wxWindow*, const wxGLContext*, wxWindowID, const wxPoint&, const wxSize&, long int, const wxString&, const int*, const wxPalette&)' is deprecated (declared at C:\wxWidgets-3.0.0\include/wx/msw/glcanvas.h:107) [-Wdeprecated-declarations]|
C:\uir\pr\cb\test6\test6Main.cpp||In member function 'void TestGLCanvas::Render()':|
C:\uir\pr\cb\test6\test6Main.cpp|101|warning: 'wxGLContext* wxGLCanvasBase::GetContext() const' is deprecated (declared at C:\wxWidgets-3.0.0\include/wx/glcanvas.h:136) [-Wdeprecated-declarations]|
C:\uir\pr\cb\test6\test6Main.cpp|104|warning: 'void wxGLCanvasBase::SetCurrent()' is deprecated (declared at C:\wxWidgets-3.0.0\include/wx/glcanvas.h:138) [-Wdeprecated-declarations]|
C:\uir\pr\cb\test6\test6Main.cpp||In member function 'void TestGLCanvas::InitGL()':|
C:\uir\pr\cb\test6\test6Main.cpp|179|warning: 'void wxGLCanvasBase::SetCurrent()' is deprecated (declared at C:\wxWidgets-3.0.0\include/wx/glcanvas.h:138) [-Wdeprecated-declarations]|
||=== Build finished: 0 error(s), 6 warning(s) (0 minute(s), 49 second(s)) ===|

test6Main.cpp

#include "wx/wxprec.h"

#ifdef __BORLANDC__
#pragma hdrstop
#endif

#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif

#if !wxUSE_GLCANVAS
#error "OpenGL required: set wxUSE_GLCANVAS to 1 and rebuild the library"
#endif

#include "test6Main.h"
//#include "sample.xpm"

#ifndef __WXMSW__     // for StopWatch, see remark below
#if defined(__WXMAC__) && !defined(__DARWIN__)
#include <utime.h>
#include <unistd.h>
#else
#include <sys/time.h>
#include <sys/unistd.h>
#endif
#else
#include <sys/timeb.h>
#endif

/*----------------------------------------------------------------------
Utility function to get the elapsed time (in msec) since a given point
in time (in sec)  (because current version of wxGetElapsedTime doesnґt
works right with glibc-2.1 and linux, at least for me)
-----------------------------------------------------------------------*/
unsigned long StopWatch( unsigned long *sec_base )
{
  unsigned long secs,msec;

  #if defined(__WXMSW__)
  struct timeb tb;
  ftime( &tb );
  secs = tb.time;
  msec = tb.millitm;
  #elif defined(__WXMAC__) && !defined(__DARWIN__)
  wxLongLong tl = wxGetLocalTimeMillis();
  secs = (unsigned long) (tl.GetValue() / 1000);
  msec = (unsigned long) (tl.GetValue() - secs*1000);
  #else
  // think every unice has gettimeofday
  struct timeval tv;
  gettimeofday( &tv, (struct timezone *)NULL );
  secs = tv.tv_sec;
  msec = tv.tv_usec/1000;
  #endif

  if( *sec_base == 0 )
  *sec_base = secs;

  return( (secs-*sec_base)*1000 + msec );
}

/*----------------------------------------------------------------
Implementation of Test-GLCanvas
-----------------------------------------------------------------*/

BEGIN_EVENT_TABLE(TestGLCanvas, wxGLCanvas)
  EVT_SIZE(TestGLCanvas::OnSize)
  EVT_PAINT(TestGLCanvas::OnPaint)
  EVT_ERASE_BACKGROUND(TestGLCanvas::OnEraseBackground)
  EVT_ENTER_WINDOW( TestGLCanvas::OnEnterWindow )
END_EVENT_TABLE()

unsigned long  TestGLCanvas::m_secbase = 0;
int            TestGLCanvas::m_TimeInitialized = 0;
unsigned long  TestGLCanvas::m_xsynct;
unsigned long  TestGLCanvas::m_gsynct;

TestGLCanvas::TestGLCanvas(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name)
                          : wxGLCanvas(parent, (wxGLCanvas*) NULL, id, pos, size, style|wxFULL_REPAINT_ON_RESIZE , name )
{
  m_init = false;
  m_gllist = 0;
}

TestGLCanvas::TestGLCanvas(wxWindow *parent, const TestGLCanvas *other, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name)
                          : wxGLCanvas(parent, other->GetContext(), id, pos, size, style|wxFULL_REPAINT_ON_RESIZE , name)
{
  m_init = false;
  m_gllist = other->m_gllist; // share display list
}

TestGLCanvas::~TestGLCanvas()
{
}

void TestGLCanvas::Render()
{
  wxPaintDC dc(this);

  #ifndef __WXMOTIF__
  if (!GetContext()) return;
  #endif

  SetCurrent();
  // Init OpenGL once, but after SetCurrent
  if (!m_init)
  {
    InitGL();
    m_init = true;
  }

  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  glFrustum(-0.5f, 0.5f, -0.5f, 0.5f, 1.0f, 3.0f);
  glMatrixMode(GL_MODELVIEW);

  /* clear color and depth buffers */
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

  if( m_gllist == 0 )
  {
    m_gllist = glGenLists( 1 );
    glNewList( m_gllist, GL_COMPILE_AND_EXECUTE );
    /* draw six faces of a cube */
    glBegin(GL_QUADS);
    glNormal3f( 0.0f, 0.0f, 1.0f);
    glVertex3f( 0.5f, 0.5f, 0.5f); glVertex3f(-0.5f, 0.5f, 0.5f);
    glVertex3f(-0.5f,-0.5f, 0.5f); glVertex3f( 0.5f,-0.5f, 0.5f);

    glNormal3f( 0.0f, 0.0f,-1.0f);
    glVertex3f(-0.5f,-0.5f,-0.5f); glVertex3f(-0.5f, 0.5f,-0.5f);
    glVertex3f( 0.5f, 0.5f,-0.5f); glVertex3f( 0.5f,-0.5f,-0.5f);

    glNormal3f( 0.0f, 1.0f, 0.0f);
    glVertex3f( 0.5f, 0.5f, 0.5f); glVertex3f( 0.5f, 0.5f,-0.5f);
    glVertex3f(-0.5f, 0.5f,-0.5f); glVertex3f(-0.5f, 0.5f, 0.5f);

    glNormal3f( 0.0f,-1.0f, 0.0f);
    glVertex3f(-0.5f,-0.5f,-0.5f); glVertex3f( 0.5f,-0.5f,-0.5f);
    glVertex3f( 0.5f,-0.5f, 0.5f); glVertex3f(-0.5f,-0.5f, 0.5f);

    glNormal3f( 1.0f, 0.0f, 0.0f);
    glVertex3f( 0.5f, 0.5f, 0.5f); glVertex3f( 0.5f,-0.5f, 0.5f);
    glVertex3f( 0.5f,-0.5f,-0.5f); glVertex3f( 0.5f, 0.5f,-0.5f);

    glNormal3f(-1.0f, 0.0f, 0.0f);
    glVertex3f(-0.5f,-0.5f,-0.5f); glVertex3f(-0.5f,-0.5f, 0.5f);
    glVertex3f(-0.5f, 0.5f, 0.5f); glVertex3f(-0.5f, 0.5f,-0.5f);
    glEnd();

    glEndList();
  }
  else
  {
    glCallList(m_gllist);
  }

  glFlush();
  SwapBuffers();
}

void TestGLCanvas::OnEnterWindow( wxMouseEvent& WXUNUSED(event) )
{
  SetFocus();
}

void TestGLCanvas::OnPaint( wxPaintEvent& WXUNUSED(event) )
{
  Render();
}

void TestGLCanvas::OnEraseBackground(wxEraseEvent& WXUNUSED(event))
{
  // Do nothing, to avoid flashing.
}

void TestGLCanvas::InitGL()
{
  SetCurrent();

  /* set viewing projection */
  glMatrixMode(GL_PROJECTION);
  glFrustum(-0.5f, 0.5f, -0.5f, 0.5f, 1.0f, 3.0f);

  /* position viewer */
  glMatrixMode(GL_MODELVIEW);
  glTranslatef(0.0f, 0.0f, -2.0f);

  /* position object */
  glRotatef(30.0f, 1.0f, 0.0f, 0.0f);
  glRotatef(30.0f, 0.0f, 1.0f, 0.0f);

  glEnable(GL_DEPTH_TEST);
  glEnable(GL_LIGHTING);
  glEnable(GL_LIGHT0);
}

BEGIN_EVENT_TABLE(MyFrame, wxFrame)
  EVT_MENU(wxID_EXIT, MyFrame::OnExit)
END_EVENT_TABLE()

// My frame constructor
MyFrame::MyFrame(wxWindow *parent, const wxString& title, const wxPoint& pos, const wxSize& size, long style)
        : wxFrame(parent, wxID_ANY, title, pos, size, style)
{
  m_canvas = NULL;
//  SetIcon(wxIcon(sample_xpm));
}

// Intercept menu commands
void MyFrame::OnExit( wxCommandEvent& WXUNUSED(event) )
{
  // true is to force the frame to close
  Close(true);
}

/*static*/ MyFrame *MyFrame::Create(MyFrame *parentFrame, bool isCloneWindow)
{
  wxString str = wxT("wxWidgets OpenGL Cube Sample");
  if (isCloneWindow) str += wxT(" - Clone");

  MyFrame *frame = new MyFrame(NULL, str, wxDefaultPosition,
  wxSize(400, 300));

  // Make a menubar
  wxMenu *winMenu = new wxMenu;

  winMenu->Append(wxID_EXIT, _T("&Close"));
  wxMenuBar *menuBar = new wxMenuBar;
  menuBar->Append(winMenu, _T("&Window"));

  frame->SetMenuBar(menuBar);

  if (parentFrame)
  {
    frame->m_canvas = new TestGLCanvas( frame, parentFrame->m_canvas,
    wxID_ANY, wxDefaultPosition, wxDefaultSize );
  }
  else
  {
    frame->m_canvas = new TestGLCanvas(frame, wxID_ANY,
    wxDefaultPosition, wxDefaultSize);
  }

  // Show the frame
  frame->Show(true);

  return frame;
}

IMPLEMENT_APP(MyApp)

bool MyApp::OnInit()
{
  MyFrame::Create(NULL);

  return true;
}


test6Main.h

#ifndef _WX_CUBE_H_
#define _WX_CUBE_H_

#include "wx/glcanvas.h"

// Define a new application type
class MyApp: public wxApp
{
public:
  bool OnInit();
};

// Define a new frame type
class TestGLCanvas;

class MyFrame: public wxFrame
{
public:
  static MyFrame *Create(MyFrame *parentFrame, bool isCloneWindow = false);
  void OnExit(wxCommandEvent& event);

private:
  MyFrame(wxWindow *parent, const wxString& title, const wxPoint& pos,
  const wxSize& size, long style = wxDEFAULT_FRAME_STYLE);

  TestGLCanvas *m_canvas;

  DECLARE_EVENT_TABLE()
};

#if wxUSE_GLCANVAS

class TestGLCanvas: public wxGLCanvas
{
  friend class MyFrame;
public:
  TestGLCanvas( wxWindow *parent, wxWindowID id = wxID_ANY,
  const wxPoint& pos = wxDefaultPosition,
  const wxSize& size = wxDefaultSize,
  long style = 0, const wxString& name = _T("TestGLCanvas") );

  TestGLCanvas( wxWindow *parent, const TestGLCanvas *other,
  wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
  const wxSize& size = wxDefaultSize, long style = 0,
  const wxString& name = _T("TestGLCanvas") );

  ~TestGLCanvas();

  void OnPaint(wxPaintEvent& event);
  void OnEraseBackground(wxEraseEvent& event);
  void OnEnterWindow(wxMouseEvent& event);

  void Render();
  void InitGL();

private:
  bool   m_init;
  GLuint m_gllist;

  static unsigned long  m_secbase;
  static int            m_TimeInitialized;
  static unsigned long  m_xsynct;
  static unsigned long  m_gsynct;

  unsigned long  m_StartTime;
  unsigned long  m_LastTime;
  unsigned long  m_LastRedraw;

  DECLARE_EVENT_TABLE()
};

#endif // #if wxUSE_GLCANVAS

#endif // #ifndef _WX_CUBE_H_


Если я правильно понимаю, то не хватает каких-то библиотек. Если это так, то каких и как их подключать?
OKTA
Это не ошибки, а ворнинги. После компиляции не запускается?
Iron Bug

ОФФ:

модератору: тему переименовать, ибо тут ничего нет ни про undefined reference, ни, тем более, про codeblocks.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.