Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

Lua 게시판
Lua 스크립트 게시판입니다.
[7] 후아...luatinker컴파일해서 샘플 소스 되기까지...
망치 [mangchy] 12412 읽음    2009-11-16 20:50
레조님의 글을 읽고 luatinker를 쓰기로 했었습니다.
다른 lua관련된거 여러개 찾아봤지만 luatinker가 일단 쓰기 편하게 보이더군요.

개발환경
- Lua 5.14
- LuaTinker 0.5d
- C++ Builder 2007

일단 Lua 5.14를 빌더에서 lib파일로 생성했습니다. 별 무리없이 걍 되더군요.
LuaTinker 0.5b로 하려다가 0.5d가 나왔더군요. 그래서 레조님의 글처럼 몇개 처리하고, 나머지 몇부분 더 나오더군요.
그것도 눈치것 수정해서 컴파일 되었습니다.

LuaTinker에서 샘플 6개를 한개씩 돌려보았습니다.
콘솔 화면 뜨면서 멈춥니다. 헉...

여기에서부터 이제 삽질이 시작됩니다.

VC++ 2008로 돌려봅니다. Lua5.14는 컴파일 되고, LuaTinker 0.5d 포함한 샘플프로젝트 에러 생깁니다.
프로젝트 옵션 이것 저것 변경해보고, 구글링해보고...도서관에가서 한권 있는 lua책 빌려보고,
결국 샘플 소스 컴파일 완료...짜잔 콘솔에서 잘 돌아갑니다.

흠 그러면 VC++에서 DLL파일 만들어서 빌더에서 써야겠군.하고 생각하고,
VC++에서 DLL파일 만들어봅니다. 한개씩 lua함수 올려봅니다.
일단 간단하게 open, close 잘됩니다.
그리고 함수 등록하는 소스 넣어보니 컴파일 안됩니다.

에러사항 구글링 해보니 lib파일로 하라고 하더군요. 그래서 겨우 lib로 해서 짜잔 컴파일이 되었습니다.
그런데 빌더로 lib파일 가져오려니 coff2omf가 안되어요...이것은 결국 DLL과 같은 것만 잘 되네요.
결국 이것저것 돌려보다가 포기.

다시 빌더로 옵니다.
멈춘 부분이 왜 멈출까? 하고 궁금해집니다.

디버그로 Lua를 컴파일해서 샘플소스 다시 돌려봅니다.
엄청난 함수안에 함수들을 추적끝에 결국 찾아내었습니다.

Lua라이브러리의  lbaselib.c에 luaB_print함수에서 fputs(s, stdout); -----------이 부분...
Lua에서 print하면 이곳에서 콘솔에 인쇄되는 부분같은데...이곳에서 홀딩입니다.

그런데 함수 주석에
/*
** If your system does not support `stdout', you can just remove this function.
** If you need, you can define your own `print' function, following this
** model but changing `fputs' to put the strings at a proper place
** (a console window or a log file, for instance).
*/

이렇게 되어 있더군요.
그래서 걍 fputs부분만 날렸습니다.

드디어 실행이 됩니다.
물론  Lua소스에서 print부분은 안되지만 나머지 로직은 다 살아났습니다.

샘플 1부터 6까지 모두 됩니다. ㅎㅎ 만세!

한 이틀동안 빌더는 왜이리 이런걸가 잘 안될까...불평하고 있었는데...

LuaTinker가 멋지군요.
클래스 함수도 콜백이 되고...

저한테는 한방이라는 것은 없네요...이것저것 다 살펴보게 만드는 이 수렁의 실력은 언제쯤 업그레이드 되려는지...

하여튼 이제는 준비는 다 되었네요..
강재호.만해 [greenuri]   2009-11-16 23:32 X
lua 랑 ruby, java랑 연계 가능한가요?
남병철.레조 [lezo]   2009-11-17 03:42 X
ㅋ.. 고생하셨습니다. 고뇌의 시간이 느껴지는듯...

이런 일들에는 오래된 MS의 강한 심리전이 숨어 있습니다. ~_~ ㅎㅎ
물론 탈출 방법이 있지만... 가장 확실한건 LIB 호환성을 갖는것인데... 그건 안되더라도 차선책은 있습니다.
기회되면 이런 심리전?을 좀 다루고 싶긴 합니다.
망치 [mangchy]   2009-11-17 07:59 X
lua를 자바랑 쓰는건 검색도중에 봤던거는 같네요...일단 제가 안해본 이상은 불확실하지만요...
망치 [mangchy]   2009-11-17 21:19 X
LuaTinker 쓰다보니 정말 좋네요. 물론 Lua도 괜챦구요. 쓰다가 몇가지 LuaTinker부분을 추가했지만...그래도 너무 멋진걸요...
소지영(몽인) [neonim]   2009-11-18 18:10 X
표준출력이 지원 안된다는 건가요...
아니면 혹시 콘솔용 프로그램이 아니라서 그랬던건가요?
(그렇게 생각해도 콘솔용이 아니라고 fputs를 못쓴다는것도 그렇고.....)
lua를 모르는데...
주석 부분을 보니 일반적인 PC환경에서는 그냥 잘 돌아가야 하는거 아닌가 싶은 생각에 궁금해서 물어 봅니다.
좀더 알려 주세요..
궁금해요... ^^
망치 [mangchy]   2009-11-19 07:56 X
콘솔용 프로그램으로 하는데 안되더라구요. 이 소스를 VC++에서는 잘 돌아가요.
그런데 빌더로 가져오면 이 부분에서 멈춰요.
이해안되는 부분이죠. 그래서 lua에서는 print함수를 안쓰고, 따로 debug 함수를 등록해서 debug콜백하고 있습니다.
소지영(몽인) [neonim]   2009-11-19 14:33 X
그렇군요...
kmpop2000 [kmpop2000]   2011-12-21 18:31 X
please send me a copy of luatinker 0.5d, I can not find it anywhere, the download link
최신버전은 LuaTinker 0.5d(http://dexgame.com/zbxe/?mid=download)
seems to be broken

here is my email : kmpop2000@sina.com
thanks a lot

+ -

관련 글 리스트
7 후아...luatinker컴파일해서 샘플 소스 되기까지... 망치 12412 2009/11/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.