2008년 8월 22일자로 Lua 5.1.4 버젼이 릴리즈 되었습니다. 다운은 루아 공식 사이트에서 받으실 수 있습니다.
컴파일 된 루아 Windows용 버전 또한 LuaForge에서 다운 받으실 수 있습니다. ------------------------------------------------------------------------------------------------------- 헉.. 매주 가면서도 미처 알지 못했네요.....
간만에 rss를 확인하니.. 릴리즈 되었다고 하고. 눈이 헛달린.. ㅜㅡ
--------------------------------------------------------------------------------- "6.x 대에서 갑자기 10 대로 급 상승 했습니다." 문구는 MASM32와 MASM32 SDK를 착각한 작가의 혼동에서 비롯 되어 오류가 있었습니다. 그 부분을 수정 합니다.
릴리즈 노트를 알 수 없어 SDK가 어떻게 진행 되고 있는지 모르겠습니다. 현재 릴리즈된 버젼은 10 입니다. 또한 MASM32는 현재 버젼 7에 있습니다.
이미지 작업 어려움과 개인적인 업무로 더 이상 진행 할 수 없다고 판단 하여, 현재까지 진행된 상태로 릴리즈를 하겠습니다. 이미지를 제외한 전부분이 한글화가 되었다고 보시면 좋겠습니다.
한글화된 부분
- 대사 및 타이틀 및 타이틀 곡, 캐릭터 명 - 음악관 - 기타 부분
릴리즈 일시는 구정이 낀 토요일 2008년 2월 9일 입니다. 당일 베타 게시판은 폐쇄 되며 패치 파일은 파란 동방 클럽과 현 블로그에 올리 겠습니다. 관련 소스 또한 정리가 되는 데로 올리도록 하겠습니다. 특별한 이유를 제외 하고는 재 패치 예정은 없도록 진행 하려 합니다.
혹시 요요몽 소스 가지고 계신가요?
혹시나 가지고 계신다면 en_sia@naver.com으로 부탁드립니다.. (굽신굽신)
화이트캣님께서 개인적 사정으로 그만두신다니 요요몽 한글화라도 진행해볼까 생각중이거든요.
(홍마향 이미지 수정 지원드릴까 했는데 너무 늦은듯 하네요 ^^
일단 홍마향 소스 공개 기다리겠습니다~
이전의 글과 다른 형태로 변경 하였습니다. 각 val_* 인터페이스는 강제적으로 추가 하게 하였고 윈도우 버젼에서는 val 함수를 강제로 뺐습니다. 각 대응함수는 이전의 글에서 설명을 드렸으므로 별도로 설명을 하지 않겠습니다. 소스는 아래의 경로에서 받으실 수 있습니다.
Microsoft Visual C++(이하 MSVC) 2002 버젼 이하에서 LuaRover(이하 LR)가 컴파일이 되지 않는다. MSVC 2002 이하 버젼에는 template 관련 버그가 있고 그것을 유발 할 수 있는 코드가 LR 포함되어 있기 때문이다. 물론 자체 테스트 역시 컴파일은 성공적으로 수행되지는 않았다.
문제가 되는 부분은 아래의 선언에 타입별로 구현된 부분이다.
template<typename T> T val() throw(LuaError);
int의 구현 부분을 예로 들면 아래와 같다.
template<> int LuaObject::val<int> () throw(LuaError) { ... }
구현 부분
성공적으로 컴파일을 하려면 버그를 유발하는 이 template는 코드를 수정하거나 버젼이 높은 버젼을 사용하여 컴파일 하는 방법 외엔 없다.
필자는 전자의 코드 수정 방법을 사용하여 이 버그를 피했다. 수정 내용은 아래와 같다.
template<typename T> T val() throw(LuaError);
->
#ifdef WIN32 int val_int() throw(LuaError); double val_double() throw(LuaError); std::string val_string() throw(LuaError); #else template<typename T> T val() throw(LuaError); #endif
LuaRover.hpp 수정
// 코드 추가 #ifdef WIN32 #define LuaRover_valFunc(type) type LuaObject::val_ ## type () throw(LuaError) #define luaRover_var(type) val_ ## type #else #define LuaRover_valFunc(type) template<> \ type LuaObject::val<type>() throw(LuaError)
#define luaRover_var(type) val<type> #endif
LuaRover.cpp에 추가할 코드
template<> int LuaObject::val<int>() throw(LuaError) { if (!lua_isnumber(lua_state_, -1)) throw LuaError(LuaError::NOT_A_NUMBER, last_key_ + " is Not A Number");
int result = lua_tointeger(lua_state_, -1); pop_stack(); return result; }
->
LuaRover_valFunc(int) { if (!lua_isnumber(lua_state_, -1)) throw LuaError(LuaError::NOT_A_NUMBER, last_key_ + " is Not A Number");
int result = lua_tointeger(lua_state_, -1); pop_stack(); return result; }