Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Подсказки / Luabind+Visual Studio 2010

Luabind+Visual Studio 2010

Автор:

Установил я вчера Microsoft Visual Studio 2010 RC. И начал переносить свой проект использующий luabind на новую Visual Studio. Как оказалось, luabind v0.9 не скомпилировался под ней.

Были такие ошибки:

c:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\utility(163) : error C2
440: 'initializing' : cannot convert from 'int' to 'void *'
        Conversion from integral type to pointer type requires reinterpret_cast,
 C-style cast or function-style cast
        c:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\utility(247) :
see reference to function template instantiation 'std::_Pair_base<_Ty1,_Ty2>::_P
air_base<_Ty,_Ty>(_Other1 &&,_Other2 &&)' being compiled
        with
        [
            _Ty1=void *,
            _Ty2=int,
            _Ty=int,
            _Other1=int,
            _Other2=int
        ]
        C:\luabind-0.9\luabind-0.9\luabind/detail/object_rep.hpp(58) : see refer
ence to function template instantiation 'std::pair<_Ty1,_Ty2>::pair<int,int>(_Ot
her1 &&,_Other2 &&)' being compiled
        with
        [
            _Ty1=void *,
            _Ty2=int,
            _Other1=int,
            _Other2=int
        ]
c:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\utility(163) : error C2
439: 'std::_Pair_base<_Ty1,_Ty2>::first' : member could not be initialized
        with
        [
            _Ty1=void *,
            _Ty2=int
        ]
        c:\Program Files\Microsoft Visual Studio 10.0\VC\INCLUDE\utility(166) :
see declaration of 'std::_Pair_base<_Ty1,_Ty2>::first'
        with
        [
            _Ty1=void *,
            _Ty2=int
        ]

Но к радости, проблема оказалась в довольно простой вещи:

std::pair<void*,void*>(mem, 0);
или
std::pair<void*, int>(0, -1);

Таких мест в исходниках немного, а суть ошибки оказалась довольно простой. Все что нужно, это во всех местах, где встречаются такие вещи вместо 0 написать (void*)0.

std::pair<void*,void*>(mem, ( void*)0);
или
std::pair<void*, int>(( void*)0, -1);

После таких изменений luabind будет работать.

Можете ничего не делать, а сразу качать luabind с моими изменениями.

Также я там изменил Jamroot, чтобы можно было компилировать без добавления переменных окружения в windows
(если уже установлены Boost и Lua в стандартные свои папки C:\Boost и C:\program files\lua).

Для компиляции можно сразу запустить добавленный мной батник (не хватает папки tools, ее взять из boosta):
luabind под Visual Studio 2010 RC

12 марта 2010

#Lua, #luabind, #Visual Studio, #скрипты

2001—2017 © GameDev.ru — Разработка игр