Search Results for 'cocos2dx'


2 POSTS

  1. 2016.11.29 cocos2dx C++ 소스에 LUA 적용법 (비쥬얼스튜디오)
  2. 2014.07.21 NDK Debugging 1

cocos2dx C++ 소스에 LUA 적용법 (비쥬얼스튜디오)

Posted 2016. 11. 29. 14:29 by 김민식

이때의 환경은 cocos2d-x 3.11버전에 비쥬얼 스튜디오 2015


이 부분에 대한 한글자료는 없는


링커에러에 고통받다 찾아낸 해결법을 공유함





1. 코코스 원본의 lua관련 소스를 자신의 프로젝트 아래에 경로를 일치시켜 이동

MyProject\cocos2d\external\lua

MyProject\cocos2d\cocos\scripting\lua-bindings


이런식으로 옮겨놔야한다.


2. 비쥬얼스튜디오의 솔루션에 libluacocos2d 프로젝트를 추가

MyProject\cocos2d\cocos\scripting\lua-bindings\proj.win32\libliacocos2d.vcxproj를 솔루션우클릭 -> Add -> Existing project...로 추가하면 된다.


3. 솔루션에서 자신의 게임 프로젝트의 프로퍼티에 들어가서 C/C++ -> Additional Include Directories에


$(EngineRoot)cocos\scripting\lua-bindings\auto
$(EngineRoot)cocos\scripting\lua-bindings\manual
$(EngineRoot)external\lua\luajit\include
$(EngineRoot)external\lua\tolua
$(EngineRoot)external\lua


를 추가한다.


4. 3의 프로퍼티에서 C/C++ -> Preprocessor -> Preprocessor definitions에 _USRLUASTATIC 을 추가한다.


5. 3의 프로퍼티에서 Linker -> Input -> Additional Dependencies에 비쥬얼 스튜디오가 2015라면 lua51-2015.lib을 아니라면 lua51.lib을 추가한다.


6. 자신의 프로젝트를 우클릭하여 Add -> Reference -> libluacocos2d 추가.


7. 솔루션 프로퍼티에 들어가 Common Properties -> Project Dependencies에서 libluacocos2d 추가.




(아마도) 이렇게하면 될것이다.

'Programing Language > C/C++' 카테고리의 다른 글

Postfixation  (0) 2013.04.22

NDK Debugging

Posted 2014. 7. 21. 23:56 by 김민식

fatal signal 11 (SIGSEGV) at 0x00000010로 고통받다 에러난곳의 디버깅 방법을 발견하고 구제 받음.


에러원인은 bool 멤버변수를 초기화 안하고 그대로 써서..........후.............


클래스 상속시엔 멤버를 소중히










출처 : http://bongman.tistory.com/21


앱이 실행 중 크래쉬됐을 때는 크래쉬 덤프(crash dump)를 확인하면 대강의 원인을 파악할 수 있다. 이를 위해 ‘Addr2line’ 라는 툴을 사용한다. Addr2line 툴은 명령어 주소와 실행 이미지를 파일 이름, 함수 이름, 소스 라인 번호로 변환하는 유틸리티이다. NDK는 ‘arm-linux-androideabi-addr2line’ 라는 이름으로 해당 툴을 제공한다.


먼저 아래 그림과 같이 사용자 계정의 루트 디렉토리로 이동한 뒤 편집기로 .bash_profile 파일을 연다. 



그리고 PATH 에 ‘arm-linux-androideabi-addr2line’ 툴이 있는 디렉토리를 다음과 같이 추가한다.


 export PATH=${PATH}:$NDK_ROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin


여기서 ‘$NDK_ROOT’ 는 NDK가 설치된 디렉토리를 의미한다. 각자 환경에 맞게 절대 경로를 넣는다. 설정을 마쳤으면 현재 프로젝트의 /proj.android 디렉토리로 이동한 뒤 아래와 같이 Addr2line를 실행한다.


 arm-linux-androideabi-addr2line -C -f -e obj/local/armeabi/libXXX.so <address>


libXXX.so 는 게임 소스 라이브러리를 의미하며 기본으로 설정된 이름을 수정하지 않았다면 libgame.so 다. <address>는 앱이 크래쉬됐을 때 이클립스 LogCat에 출력되는 주소 값이다.


아래 그림은 앱이 크래쉬됐을 때 LogCat에 출력되는 로그다. 하이라이트된 라인의 000e6c54가 크래쉬된 코드의 주소 값이다. 



이 주소 값을 Addr2line 툴에 넘겨주고 실행해 보면 아래 그림과 같이 문제가 된 파일명인 ‘HelloWorldScene.cpp’과 ‘76’ 이라는 라인 정보, 그리고 멤버 함수명인 ‘HelloWorld::init()’ 까지 출력된다.