Sieht stark nach tippfehler aus:

createWindow anstatt creatwindow
perspective anstatt perpective...

Nimm mal die Fehler raus und schau weiter.
Das ist einer der Gründe, warum ich grundsätzlich zu C++ rate: Da hätte schon der Compiler und nicht erst der Linker das Übersetzen verweigert, und der Fehler wäre schneller gefunden wurden. Allerdings
bin ich mir auch nicht sicher, ob man mit C99 nicht das Verhalten an C++ angepasst hätte. Der Gcc implementiert es jedenfalls nicht.