Hi guys, I need you help. I written a code for the Kinect driver. I do not intend to plot the image out that is why i have not included the OpenGL header files. I can compile but i can't seem to link the file.I get a lot of errors when i link.Do anyone of know what the error? Any Help will be appreciated. #include "libfreenect.h" #include "libfreenect.hpp" #include #include #include #include #include #include #include class Mutex { public: Mutex() { pthread_mutex_init( &m_mutex, NULL ); } void lock() { pthread_mutex_lock( &m_mutex ); } void unlock() { pthread_mutex_unlock( &m_mutex ); } class ScopedLock { Mutex & _mutex; public: ScopedLock(Mutex & mutex) : _mutex(mutex) { _mutex.lock(); } ~ScopedLock() { _mutex.unlock(); } }; private: pthread_mutex_t m_mutex; }; class FreenectDevice; Freenect::Freenect freenect; Freenect::FreenectDevice::FreenectDevice* device; freenect_video_format requested_format(FREENECT_VIDEO_RGB); class FreenectDevice : public Freenect::FreenectDevice { public: FreenectDevice(freenect_context *_ctx, int _index) : Freenect::FreenectDevice(_ctx, _index), m_buffer_depth(freenect_find_video_mode(FREENECT_RESOLUTION_MEDIUM, FREENECT_VIDEO_RGB).bytes),m_buffer_video(freenect_find_video_mode(FREENECT_RESOLUTION_MEDIUM, FREENECT_VIDEO_RGB).bytes), m_gamma(2048), m_new_depth_frame(false) { float m_depth[2048]; for( unsigned int i = 0 ; i < 2048 ; i++) { const float k1 = 1.1863; const float k2 = 2842.5; const float k3 = 0.1236; m_depth[i] = k3 * tan(i/k2 + k1); } } virtual void DepthCallback(void* _depth, uint32_t timestamp) { Mutex::ScopedLock lock(m_depth_mutex); uint16_t* depth = static_cast(_depth); m_new_depth_frame = true; } bool getDepth(std::vector &buffer) { Mutex::ScopedLock lock(m_depth_mutex); if (!m_new_depth_frame) return false; buffer.swap(m_buffer_depth); m_new_depth_frame = false; return true; } private: std::vector m_buffer_depth; std::vector m_buffer_video; std::vector m_gamma; Mutex m_depth_mutex; bool m_new_depth_frame; virtual void VideoCallback(void *video, uint32_t timestamp); //virtual void DepthCallback(void *depth, uint32_t timestamp) = 0; }; int g_argc; char **g_argv; int main(int argc, char **argv) { using namespace std; device = &freenect.createDevice(0); uint16_t m_depth[640*480]; // depth data from Kinect in a 1-D array float x[480*640]; // point cloud x values float y[480*640]; // point cloud y values float z[480*640]; // point cloud z values float cx = 320.0; // center of projection float cy = 240.0; // center of projection float fx = 600.0; // focal length in pixels float fy = 600.0; // focal length in pixels float minDistance = -10; float scaleFactor = 0.0021; device->startDepth(); for (int v=0, n=0 ; v<480 ; v++) { for ( int u=0 ; u<640 ; u++, n++) { // note that values will be in meters, with the camera at the origin, and the Kinect has a minimum range of ~0.5 meters x[n] = (u - cx) * (z[n]+ minDistance) * scaleFactor * (cx/cy); y[n] = (v - cy) * (z[n]+ minDistance) * scaleFactor; z[n] = m_depth[n]; } } ofstream outf("Sample.dat"); for (int v=0 ; v<480 ; v++) { for ( int n=0 ; n<640 ; n++) { outf << z[n]; } outf << endl; } device->stopDepth(); return 0; }; The error is laksh.o: In function `Freenect::FreenectDevice::FreenectDevice(_freenect_context*, int)': laksh.cpp:(.text._ZN8Freenect14FreenectDeviceC2EP17_freenect_contexti[Freenect::FreenectDevice::FreenectDevice(_freenect_context*, int)]+0x35): undefined reference to `freenect_open_device' laksh.cpp:(.text._ZN8Freenect14FreenectDeviceC2EP17_freenect_contexti[Freenect::FreenectDevice::FreenectDevice(_freenect_context*, int)]+0x12e): undefined reference to `freenect_set_user' laksh.cpp:(.text._ZN8Freenect14FreenectDeviceC2EP17_freenect_contexti[Freenect::FreenectDevice::FreenectDevice(_freenect_context*, int)]+0x149): undefined reference to `freenect_find_video_mode' laksh.cpp:(.text._ZN8Freenect14FreenectDeviceC2EP17_freenect_contexti[Freenect::FreenectDevice::FreenectDevice(_freenect_context*, int)]+0x184): undefined reference to `freenect_set_video_mode' laksh.cpp:(.text._ZN8Freenect14FreenectDeviceC2EP17_freenect_contexti[Freenect::FreenectDevice::FreenectDevice(_freenect_context*, int)]+0x19f): undefined reference to `freenect_find_depth_mode' laksh.cpp:(.text._ZN8Freenect14FreenectDeviceC2EP17_freenect_contexti[Freenect::FreenectDevice::FreenectDevice(_freenect_context*, int)]+0x1da): undefined reference to `freenect_set_depth_mode' laksh.cpp:(.text._ZN8Freenect14FreenectDeviceC2EP17_freenect_contexti[Freenect::FreenectDevice::FreenectDevice(_freenect_context*, int)]+0x1f0): undefined reference to `freenect_set_depth_callback' laksh.cpp:(.text._ZN8Freenect14FreenectDeviceC2EP17_freenect_contexti[Freenect::FreenectDevice::FreenectDevice(_freenect_context*, int)]+0x206): undefined reference to `freenect_set_video_callback' laksh.o: In function `Freenect::FreenectDevice::~FreenectDevice()': laksh.cpp:(.text._ZN8Freenect14FreenectDeviceD2Ev[Freenect::FreenectDevice::~FreenectDevice()]+0x1b): undefined reference to `freenect_close_device' laksh.o: In function `Freenect::FreenectDevice::~FreenectDevice()': laksh.cpp:(.text._ZN8Freenect14FreenectDeviceD1Ev[Freenect::FreenectDevice::~FreenectDevice()]+0x1b): undefined reference to `freenect_close_device' laksh.o: In function `Freenect::FreenectDevice::~FreenectDevice()': laksh.cpp:(.text._ZN8Freenect14FreenectDeviceD0Ev[Freenect::FreenectDevice::~FreenectDevice()]+0x1b): undefined reference to `freenect_close_device' laksh.o: In function `Freenect::FreenectDevice::startDepth()': laksh.cpp:(.text._ZN8Freenect14FreenectDevice10startDepthEv[Freenect::FreenectDevice::startDepth()]+0x13): undefined reference to `freenect_start_depth' laksh.o: In function `Freenect::FreenectDevice::stopDepth()': laksh.cpp:(.text._ZN8Freenect14FreenectDevice9stopDepthEv[Freenect::FreenectDevice::stopDepth()]+0x13): undefined reference to `freenect_stop_depth' laksh.o: In function `Freenect::FreenectDevice::freenect_depth_callback(_freenect_device*, void*, unsigned int)': laksh.cpp:(.text._ZN8Freenect14FreenectDevice23freenect_depth_callbackEP16_freenect_devicePvj[Freenect::FreenectDevice::freenect_depth_callback(_freenect_device*, void*, unsigned int)]+0xd): undefined reference to `freenect_get_user' laksh.o: In function `Freenect::FreenectDevice::freenect_video_callback(_freenect_device*, void*, unsigned int)': laksh.cpp:(.text._ZN8Freenect14FreenectDevice23freenect_video_callbackEP16_freenect_devicePvj[Freenect::FreenectDevice::freenect_video_callback(_freenect_device*, void*, unsigned int)]+0xd): undefined reference to `freenect_get_user' laksh.o: In function `Freenect::Freenect::Freenect()': laksh.cpp:(.text._ZN8Freenect8FreenectC1Ev[Freenect::Freenect::Freenect()]+0x38): undefined reference to `freenect_init' laksh.cpp:(.text._ZN8Freenect8FreenectC1Ev[Freenect::Freenect::Freenect()]+0x141): undefined reference to `pthread_create' laksh.o: In function `Freenect::Freenect::~Freenect()': laksh.cpp:(.text._ZN8Freenect8FreenectD1Ev[Freenect::Freenect::~Freenect()]+0x92): undefined reference to `pthread_join' laksh.cpp:(.text._ZN8Freenect8FreenectD1Ev[Freenect::Freenect::~Freenect()]+0x9f): undefined reference to `freenect_shutdown' laksh.o: In function `Freenect::Freenect::operator()()': laksh.cpp:(.text._ZN8Freenect8FreenectclEv[Freenect::Freenect::operator()()]+0x17): undefined reference to `freenect_process_events' laksh.o: In function `FreenectDevice::FreenectDevice(_freenect_context*, int)': laksh.cpp:(.text._ZN14FreenectDeviceC1EP17_freenect_contexti[FreenectDevice::FreenectDevice(_freenect_context*, int)]+0x29): undefined reference to `vtable for FreenectDevice' laksh.cpp:(.text._ZN14FreenectDeviceC1EP17_freenect_contexti[FreenectDevice::FreenectDevice(_freenect_context*, int)]+0x53): undefined reference to `freenect_find_video_mode' laksh.cpp:(.text._ZN14FreenectDeviceC1EP17_freenect_contexti[FreenectDevice::FreenectDevice(_freenect_context*, int)]+0xc8): undefined reference to `freenect_find_video_mode' collect2: ld returned 1 exit status