I'm trying to make a stand-alone app with OpenGL as it is mentioned here: http://bulletphysics.org/mediawiki-1.5. ... _framework. I don' want to integrate my example in the Example Browser;
My main.cpp looks like this :
Code: Select all
#include "../CommonInterfaces/CommonExampleInterface.h"
#include "../CommonInterfaces/CommonGUIHelperInterface.h"
#include "../Utils/b3Clock.h"
#include "../OpenGLWindow/SimpleOpenGL3App.h"
#include <stdio.h>
#include "../ExampleBrowser/OpenGLGuiHelper.h"
#include <iostream>
#include "SimpleCollision.h"
using namespace std;
CommonExampleInterface* example;
int gSharedMemoryKey=-1;
b3MouseMoveCallback prevMouseMoveCallback = 0;
static void OnMouseMove( float x, float y)
{
bool handled = false;
handled = example->mouseMoveCallback(x,y);
if (!handled)
{
if (prevMouseMoveCallback)
prevMouseMoveCallback (x,y);
}
}
b3MouseButtonCallback prevMouseButtonCallback = 0;
static void OnMouseDown(int button, int state, float x, float y) {
bool handled = false;
handled = example->mouseButtonCallback(button, state, x,y);
if (!handled)
{
if (prevMouseButtonCallback )
prevMouseButtonCallback (button,state,x,y);
}
}
class LessDummyGuiHelper : public DummyGUIHelper
{
CommonGraphicsApp* m_app;
public:
virtual CommonGraphicsApp* getAppInterface()
{
return m_app;
}
LessDummyGuiHelper(CommonGraphicsApp* app)
:m_app(app)
{
}
};
int main(int argc, char* argv[])
{
SimpleOpenGL3App* app = new SimpleOpenGL3App("Bullet Standalone Example",1024,768,true);
prevMouseButtonCallback = app->m_window->getMouseButtonCallback();
prevMouseMoveCallback = app->m_window->getMouseMoveCallback();
app->m_window->setMouseButtonCallback((b3MouseButtonCallback)OnMouseDown);
app->m_window->setMouseMoveCallback((b3MouseMoveCallback)OnMouseMove);
OpenGLGuiHelper gui(app,false);
//LessDummyGuiHelper gui(app);
//DummyGUIHelper gui;
CommonExampleOptions options(&gui);
example = ET_SimpleCollisionCreateFunc(options);
example->processCommandLineArgs(argc, argv);
example->initPhysics();
example->resetCamera();
b3Clock clock;
do
{
app->m_instancingRenderer->init();
app->m_instancingRenderer->updateCamera(app->getUpAxis());
btScalar dtSec = btScalar(clock.getTimeInSeconds());
if (dtSec<0.1)
dtSec = 0.1;
example->stepSimulation(dtSec);
clock.reset();
example->renderScene();
DrawGridData dg;
dg.upAxis = app->getUpAxis();
app->drawGrid(dg);
app->swapBuffer();
} while (!app->m_window->requestedExit());
example->exitPhysics();
delete example;
delete app;
return 0;
}
For compilation, I linked the following libraries : Bullet3Common, BulletDynamics, BulletCollision, LinearMath, GL, pthread, dl.
But when compiling, I get the following error :
Code: Select all
Linking CXX executable bulletcollision
CMakeFiles/bulletcollision.dir/srcGUI/main.cpp.o: In function `main':
/users/me/workspace/bullet-collision/srcGUI/main.cpp:59: undefined reference to `SimpleOpenGL3App::SimpleOpenGL3App(char const*, int, int, bool)'
/users/me/workspace/bullet-collision/srcGUI/main.cpp:67: undefined reference to `OpenGLGuiHelper::OpenGLGuiHelper(CommonGraphicsApp*, bool)'
/users/me/workspace/bullet-collision/srcGUI/main.cpp:80: undefined reference to `b3Clock::b3Clock()'
/users/me/workspace/bullet-collision/srcGUI/main.cpp:87: undefined reference to `b3Clock::getTimeInSeconds()'
/users/me/workspace/bullet-collision/srcGUI/main.cpp:92: undefined reference to `b3Clock::reset(bool)'
/users/me/workspace/bullet-collision/srcGUI/main.cpp:80: undefined reference to `b3Clock::~b3Clock()'
/users/me/workspace/bullet-collision/srcGUI/main.cpp:106: undefined reference to `OpenGLGuiHelper::~OpenGLGuiHelper()'
/users/me/workspace/bullet-collision/srcGUI/main.cpp:80: undefined reference to `b3Clock::~b3Clock()'
/users/me/workspace/bullet-collision/srcGUI/main.cpp:106: undefined reference to `OpenGLGuiHelper::~OpenGLGuiHelper()'
collect2: error: ld returned 1 exit status
CMakeFiles/bulletcollision.dir/build.make:110: recipe for target 'bulletcollision' failed
make[2]: *** [bulletcollision] Error 1
CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/bulletcollision.dir/all' failed
make[1]: *** [CMakeFiles/bulletcollision.dir/all] Error 2
Makefile:107: recipe for target 'all' failed
make: *** [all] Error 2
Code: Select all
Linking CXX executable bulletcollision
CMakeFiles/bulletcollision.dir/srcGUI/main.cpp.o: In function `main':
/users/me/workspace/bullet-collision/srcGUI/main.cpp:67: undefined reference to `OpenGLGuiHelper::OpenGLGuiHelper(CommonGraphicsApp*, bool)'
/users/me/workspace/bullet-collision/srcGUI/main.cpp:80: undefined reference to `b3Clock::b3Clock()'
/users/me/workspace/bullet-collision/srcGUI/main.cpp:87: undefined reference to `b3Clock::getTimeInSeconds()'
/users/me/workspace/bullet-collision/srcGUI/main.cpp:92: undefined reference to `b3Clock::reset(bool)'
/users/me/workspace/bullet-collision/srcGUI/main.cpp:80: undefined reference to `b3Clock::~b3Clock()'
/users/me/workspace/bullet-collision/srcGUI/main.cpp:106: undefined reference to `OpenGLGuiHelper::~OpenGLGuiHelper()'
/users/me/workspace/bullet-collision/srcGUI/main.cpp:80: undefined reference to `b3Clock::~b3Clock()'
/users/me/workspace/bullet-collision/srcGUI/main.cpp:106: undefined reference to `OpenGLGuiHelper::~OpenGLGuiHelper()'
collect2: error: ld returned 1 exit status
CMakeFiles/bulletcollision.dir/build.make:111: recipe for target 'bulletcollision' failed
make[2]: *** [bulletcollision] Error 1
CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/bulletcollision.dir/all' failed
make[1]: *** [CMakeFiles/bulletcollision.dir/all] Error 2
Makefile:107: recipe for target 'all' failed
make: *** [all] Error 2
Thanks in advance!