2010-10-11 4 views
2

J'ai un projet OpenGL pour une classe dans laquelle je suis, et il est basé sur GLUI. La bibliothèque GLUI fournie ne fonctionnera pas, c'est pourquoi j'essaie de la compiler moi-même. J'ai donc téléchargé le code source de SourceForge et essayé de compiler la bibliothèque _glui. Il me donne cela, et je ne peux trouver aucune information sur elle:Compilation de la bibliothèque GLUI, VS2010 me donne une erreur d'espace de nom bizarre

1>ClCompile: 
1> algebra3.cpp 
1> arcball.cpp 
1> glui.cpp 
1>c:\users\jake\downloads\glui-2.36\glui-2.36\src\include\gl\glui.h(1718): error C2252: an explicit instantiation of a template can only occur at namespace scope 
1>c:\users\jake\downloads\glui-2.36\glui-2.36\src\include\gl\glui.h(1719): error C2252: an explicit instantiation of a template can only occur at namespace scope 
1> glui_add_controls.cpp 
1>c:\users\jake\downloads\glui-2.36\glui-2.36\src\include\gl\glui.h(1718): error C2252: an explicit instantiation of a template can only occur at namespace scope 
1>c:\users\jake\downloads\glui-2.36\glui-2.36\src\include\gl\glui.h(1719): error C2252: an explicit instantiation of a template can only occur at namespace scope 
1> glui_bitmap_img_data.cpp 
1> glui_bitmaps.cpp 
1>c:\users\jake\downloads\glui-2.36\glui-2.36\src\include\gl\glui.h(1718): error C2252: an explicit instantiation of a template can only occur at namespace scope 
1>c:\users\jake\downloads\glui-2.36\glui-2.36\src\include\gl\glui.h(1719): error C2252: an explicit instantiation of a template can only occur at namespace scope 
1> glui_button.cpp 
1>c:\users\jake\downloads\glui-2.36\glui-2.36\src\include\gl\glui.h(1718): error C2252: an explicit instantiation of a template can only occur at namespace scope 
1>c:\users\jake\downloads\glui-2.36\glui-2.36\src\include\gl\glui.h(1719): error C2252: an explicit instantiation of a template can only occur at namespace scope 
1> glui_checkbox.cpp 
1>c:\users\jake\downloads\glui-2.36\glui-2.36\src\include\gl\glui.h(1718): error C2252: an explicit instantiation of a template can only occur at namespace scope 
1>c:\users\jake\downloads\glui-2.36\glui-2.36\src\include\gl\glui.h(1719): error C2252: an explicit instantiation of a template can only occur at namespace scope 
1> glui_column.cpp 

etc, etc, etc

Je regarde le fichier source de glui.h, et les lignes 1718 et 1719 ont ceci:

#ifdef _MSC_VER 
// Explicit template instantiation needed for dll 
template class GLUIAPI std::allocator<GLUI_String>; 
template class GLUIAPI std::vector<GLUI_String, std::allocator<GLUI_String> >; 
#endif 

Quiconque a déjà vu ça?

+0

http://masdel.wordpress.com/2010/06/13/installing-glui-using-vc-on-windows/ – kol

Répondre

1

Si quelqu'un a plus d'informations, je serais heureux de l'entendre, mais j'ai trouvé que commenter la section dans glui.h permet de compiler. Nous allons maintenant savoir si la bibliothèque compilée fonctionne réellement ....

2

Vous ne pouvez pas instancier explicitement un modèle dans une fonction ou une classe. essayez de le déplacer en dehors de la fonction ou de la classe. Ou est-ce une bibliothèque?

1

Je viens de rencontrer ce problème. alors je fais suite, vous pouvez essayer.

(1) télécharger la dernière vision de gib.
(2) utilisez vs2010 le construire.
(3), vous rencontrerez le problème

#ifdef _MSC_VER 
// Explicit template instantiation needed for dll 
template class GLUIAPI std::allocator<GLUI_String>; 
template class GLUIAPI std::vector<GLUI_String, std::allocator<GLUI_String> >; 
#endif 

juste obtenir le code de classe, encore une fois reconstruisent.
(4) vous allez générer glui.lib.
(5) utiliser le glui.lib, et le glui.h

Questions connexes