Skip to main content

NeHe lesson 40 fix (at least for my setup)

I was trying to compile the Dev-Cpp example of the nehe.gamedev.net Lesson 40, and I was always ending up with:

NeHeGL.o:NeHeGL.cpp: undefined reference to `ChoosePixelFormat@8'
NeHeGL.o:NeHeGL.cpp: undefined reference to `SetPixelFormat@12'
NeHeGL.o:NeHeGL.cpp: undefined reference to `SwapBuffers@4'
collect2: ld returned 1 exit status
*** [MinGW/Lesson40.exe] Error 1

I had spend hours thinking the problem was with my Dev-Cpp setup, but after googling onChoosePixelFormat, one of the functions on with I was having troubles, I found at msdn that this function is a gdi32 function, and the .dev file was missing this on the linker entry

I have checked and my Dev-Cpp setup had the libgdi32.a in the same folder that I also had libopengl32.a and libglu32.a so, I made the assumption that this lib should also be linked during the compilation. I did some tests just adding the -lgdi32 on the command line compilation and SUCESS! So I was just needing to make Dev-Cpp also generates the appropriate makefile.

To solve this, I opened the Lesson40.dev on the notepad and where was
Linker=-lopengl32_@@_-lglu32_@@_
I appended the -lgdi32_@@_ and it became:
Linker=-lopengl32_@@_-lglu32_@@_-lgdi32_@@_

And that is it.

Comments

Popular posts from this blog

uSleep on windows (win32)

I am facing a terrible issue regarding timing on windows. Googling arround, I've found those infos: Using QueryPerformanceCounter and QueryPerformanceFrequency APIs in Dev-C++ ( http://yeohhs.blogspot.com/2005/08/using -queryperformancecounter-and_13.html ) QueryPerformanceCounter() vs. GetTickCount() http://www.delphifaq.com/faq/delphi_windows_API/f345.shtml How to time a block of code http://www.cryer.co.uk/brian/delphi/howto_time_code.htm And Results of some quick research on timing in Win32 http://www.geisswerks.com/ryan/FAQS/timing.html With that I'm trying to write something like a uSleep function for windows: # include<windows.h> void uSleep ( int waitTime){ __int64 time1 = 0, time2 = 0, sysFreq = 0; QueryPerformanceCounter((LARGE_INTEGER *)&time1); QueryPerformanceFrequency((LARGE_INTEGER *)&freq); do { QueryPerformanceCounter((LARGE_INTEGER *)&time2); // }while((((time2-time1)*1.0)/sysFreq)<waitTime); } while ( (time2-time1) <waitTime); } T

Soft body deformation

The wikipedia has a short entry on " Soft body dynamics " but it cites this interesting framework called SOFA. "SOFA [ 1 ] is an Open Source framework primarily targeted at real-time physical simulation , with an emphasis on medical simulation. It is mostly intended for the research community to help develop newer algorithms, but can also be used as an efficient prototyping tool or as a physics engine ." [1] It is also multi-platform. As soon as I have some test written, I will put some shots here. [1] SOFA (Simulation Open Framework Architecture). (2009, March 26). In Wikipedia, The Free Encyclopedia . Retrieved 14:01, May 7, 2009, from http://en.wikipedia.org/w/index.php?title=SOFA_(Simulation_Open_Framework_Architecture)&oldid=279736872

More trickery with gnuplot dumb terminal

In my post " Plotting memory usage on console " the chart doesn't pan the data. Now, using a named pipe, the effect got a little bit nicer. First, we have to run the memUsage.sh script to get a file filled with memory usage info: ./memUsage.sh > memUsage.dat & Then we have to create a named pipe: mkfifo pipe Now we have to run another process to tail only the last 64 lines from the memUsage.dat while [ 1 ]; do tail -64 memUsage.dat> pipe; done & And now we just have to plot the data from the pipe: watch -n 1 'gnuplot -e "set terminal dumb;p \"pipe\" with lines"' And that is it!