Компиляция библиотеки GLUI, VS2010 дает мне странную ошибку в пространстве имен - PullRequest
3 голосов
/ 12 октября 2010

У меня есть проект OpenGL для класса, в котором я учусь, и он основан на GLUI.Предоставленная библиотека GLUI не будет работать, поэтому я пытаюсь скомпилировать ее самостоятельно.Итак, я скачал исходный код из SourceForge и попытался скомпилировать библиотеку _glui.Это дает мне это, и я не могу найти никакой информации об этом:

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

и т. Д., И т. Д.

Я смотрю на исходный файл glui.h и строки 1718 и 1719есть это:

#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

Кто-нибудь видел это раньше?

Ответы [ 3 ]

3 голосов
/ 20 августа 2013

Я только столкнулся с этой проблемой.затем я делаю следующее, вы можете попробовать.

(1) загрузить последнее видение из гибрида.
(2) использовать vs2010 построить его.
(3) вы столкнетесь с проблемой

#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

просто выведите код из класса, перестройте заново.
(4) вы сгенерируете glui.lib.
(5) используйте glui.lib и glui.h

2 голосов
/ 06 декабря 2012

Вы не можете явно создать экземпляр шаблона внутри функции или класса. попробуйте переместить его за пределы функции или класса. Или это библиотека?

1 голос
/ 12 октября 2010

Если у кого-то есть дополнительная информация, я был бы рад ее услышать, но я обнаружил, что комментирование раздела в glui.h позволяет его компилировать.Теперь мы выясним, действительно ли скомпилированная библиотека работает ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...