2011-11-15 19 views
7

XCode 4'te bir GLUT/OpenGL projesi oluşturuyorum. Tüm kütüphanelerimi birbirine bağlayan glut/opengl çerçevelerini ekledim.) işlevi glutInit (& argc, argv) kabul etmez ve bana glutInitDisplayMode() ve diğer glut işlevlerini bazı kabul eder, ancak glutInit() için eşleşen bir işlev çağrısı yoktur hata iletisi verir. glutCreateWindow() ama sadece değil glutInit(). AyrıcaXCode projesi belirli GLUT komutlarını tanıyamıyor

, ben 3 geri arama fonksiyonlarını

glutDisplayFunc(DisplayCallback)  
glutReshapeFunc(ReshapeCallback)  
glutKeyboardFunc(KeyboardCallback) 

Projem ac kullanıyorum yalnızca birinciyi gizler, ancak diğer ikisini tanımaz ve glutInit() ile aynı hatayı verir.

Neyin ters gidebileceği konusunda herhangi bir fikir var mı?

+3

Sorunu gösteren eksiksiz, minimal bir program gönderin. – genpfault

cevap

1

Dunno size cevap bulursa, ancak (Xcode 4.x varsayarak) Xcode projesine GLUT çerçevesini eklememiş gibi geliyor: en üstteki proje ikonuna

tıklayın ana içinde pencerenin yan çubuğu.

'Kütüphanelerle İkilemi Bağla' altındaki '+' işaretine tıklayın ve 'glut' sözcüğünü arayın.

Bu çerçeveyi ekleyin.

#import <GLUT/glut.h> 

senin başlık dosyasına mı emin olun.

33

Tam olarak aynı hatayı aldım.

Sonunda sorunu, main() işlevinin bağımsız değişkeninde değişiklikler yaparak çözdüm.

argv'un const olarak bildirilmiş olup olmadığına bakın. glutInit işlev argümanı main işlev argümanından kaldırılıyor.

glutInit(&argc, const_cast<char**>(argv)); 

gelecekteki okuyucuya delalet Bu yol:

// delete const from argv declaration 
int main(int argc, const char * argv[]) // from this, 
int main(int argc, char * argv[])  // to this. 
+0

Birisi bunun neden olduğunu söyleyebilir mi? Yani, 'const' olmadan çalışır, başarısız olur. – BRabbit27

+3

Diğer durumlarda kolayca bulunup çözülebilen C++ tipi uyumsuzluk problemidir. argv'nin glutInit() beyanı argv içeriğinin yazılabilir olduğunu, ancak ana işlevde glutInit'e iletilen argv'nin salt okunur olduğunu ve çakışma olduğunu gösterir. – Keugyeol

2

benim düşünceme göre, aşağıda kod parçacığı bakmak, C++ tür uyuşmazlığı önlemek için const_cast giriş argümanları daha iyidir Programınızın argv olduğunu bildiğiniz bir sabit ve const_cast - ne yaptığınızı biliyorsunuz.

İlgili konular