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

Sims4 VC++ 관련 1603 에러 해결법

Posted 2014. 9. 15. 06:36 by 김민식

윈7 기준


제어판 -> Windows Update -> 설치된 업데이트 -> 목록중 KB2918614를 삭제 (좌측상단 검색기능을 사용하면 좀 더 용이) -> 컴퓨터 재부팅 -> 다시 심즈4를 설치하면 해결




오리진이 문제인지 마소문제인지







재전송 VC++ 런타임 패키지 1603

'Small Talk > 일상' 카테고리의 다른 글

시작  (0) 2013.04.22

cocos2dx 확장 라이브러리 사용시 이클립스 설정

Posted 2014. 7. 31. 02:23 by 김민식
출처 : http://www.gamedevforever.com/308



결론 : android.mk에


LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static LOCAL_WHOLE_STATIC_LIBRARIES += cocos_gui_static LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static … $(call import-module,2d) $(call import-module,audio/android) $(call import-module,Box2D) $(call import-module,gui) $(call import-module,extensions) $(call import-module,editor-support/cocostudio) $(call import-module,network)


을 추가하면 된다.





extension, control, cocos2dx, eclipse

'Programing Language > Android' 카테고리의 다른 글

NDK Debugging  (1) 2014.07.21

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()’ 까지 출력된다.


Quick sort with assembly

Posted 2013. 5. 27. 09:23 by 김민식

%include "asm_io.inc"


        segment .data

        ;

        ; initialized data is put in the data segment here

        ;

array:  dd      3, 1, 5, 7, 2, 8, 4, 9, 6, 10

size:   dd      10

string1 db      "Origin : ",0x00

string2 db      "Sorted : ",0x00


        segment .text

        global  main

main:

        enter   0,0             ; setup stack frame

        pusha


        mov     eax, string1

        call    print_string

        mov     ecx, 0

repeat1:

        mov     eax, array

        mov     ebx, ecx

        shl     ebx, 2

        mov     eax, [eax+ebx]

        call    print_int

        inc     ecx

        cmp     ecx, [size]

        je      endrepeat1

        mov     eax, ','

        call    print_char

        mov     eax, ' '

        call    print_char

        jmp     repeat1

endrepeat1:

        call    print_nl


        mov     eax, [size]

        dec     eax

        push    dword eax

        push    dword 0

        call    quicksort

        add     esp, 8


        mov     eax, string2

        call    print_string

        mov     ecx, 0

repeat2:
        mov     eax, array
        mov     ebx, ecx
        shl     ebx, 2
        mov     eax, [eax+ebx]
        call    print_int
        inc     ecx
        cmp     ecx, [size]
        je      endrepeat2
        mov     eax, ','
        call    print_char
        mov     eax, ' '
        call    print_char
        jmp     repeat2
endrepeat2:
        call    print_nl

        ;
        ; code is put in the text segment. Do not modify the code before
        ; or after this comment.
        ;

        popa
        mov     eax, 0  ; return value
        leave                   ; leave stack frame
        ret

        global  quicksort
quicksort:
push    ebp
mov     ebp, esp

mov     eax, [ebp+8]
cmp     eax, [ebp+12]
jge     return

push    eax     ;first = ebp-4
mov     ebx, [ebp+12]
add     eax, ebx
shr     eax, 1
push    eax     ;middle = ebp-8
push    ebx     ;last = ebp-12
sub     esp, 16 ;for 4 dword local variable
rpt:
        mov     eax, [ebp-4]
        cmp     eax, [ebp-12]
        jge     endrpt

        mov     dword eax, array
        mov     ebx, [ebp-4]
        shl     ebx, 2
        mov     dword eax, [eax+ebx]
        mov     [ebp-16], eax

        mov     dword eax, array
        mov     ebx, [ebp-8]
        shl     ebx, 2
        mov     dword eax, [eax+ebx]
        mov     [ebp-20], eax

        mov     dword eax, array
        mov     ebx, [ebp-12]
        shl     ebx, 2
        mov     dword eax, [eax+ebx]
        mov     [ebp-24], eax

        mov     eax, [ebp-16]
        cmp     eax, [ebp-20]
        jle     endif1
        mov     ecx, [ebp-12]
                while1:
                        mov     eax, [ebp-24]
                        cmp     eax, [ebp-20]
                        jle     endwhile1
                        dec     ecx
                        mov     [ebp-12], ecx
                        mov     eax, array
                        mov     ebx, ecx
                        shl     ebx, 2
                        mov     eax, [eax+ebx]
                        mov     [ebp-24], eax
                jmp     while1
                endwhile1:
                mov     eax, [ebp-12]
                cmp     eax, [ebp-8]
                jne     endif2
                mov     eax, [ebp-4]
                mov     [ebp-8], eax
                endif2:
                mov     dword eax, array
                mov     ebx, [ebp-4]
                shl     ebx, 2
                mov     edx, [ebp-24]
                mov     dword [eax+ebx], edx
                mov     ebx, [ebp-12]
                shl     ebx, 2
                mov     edx, [ebp-16]
                mov     dword [eax+ebx], edx

                mov     eax, [ebp-16]
                mov     [ebp-28], eax
                mov     eax, [ebp-24]
                mov     [ebp-16], eax
                mov     eax, [ebp-28]
                mov     [ebp-24], eax
        endif1:
        mov     eax, [ebp-4]
        cmp     eax, [ebp-8]
        jge     endif3
                mov     eax, [ebp-4]
                inc     eax
                mov     [ebp-4], eax
        endif3:
        mov     eax, [ebp-24]
        cmp     eax, [ebp-20]
        jge     endif4
        mov     ecx, [ebp-4]
                while2:
                        mov     eax, [ebp-16]
                        cmp     eax, [ebp-20]
                        jge     endwhile2
                        inc     ecx
                        mov     [ebp-4], ecx
                        mov     eax, array
                        mov     ebx, ecx
                        shl     ebx, 2
                        mov     eax, [eax+ebx]
                        mov     [ebp-16], eax
                jmp     while2
                endwhile2:
                mov     eax, [ebp-4]
                cmp     eax, [ebp-8]
                jne     endif5
                mov     eax, [ebp-12]
                mov     [ebp-8], eax
                endif5:
                mov     dword eax, array
                mov     ebx, [ebp-4]
                shl     ebx, 2
                mov     edx, [ebp-24]
                mov     dword [eax+ebx], edx
                mov     ebx, [ebp-12]
                shl     ebx, 2
                mov     edx, [ebp-16]
                mov     dword [eax+ebx], edx

                mov     eax, [ebp-16]
                mov     [ebp-28], eax
                mov     eax, [ebp-24]
                mov     [ebp-16], eax
                mov     eax, [ebp-28]
                mov     [ebp-24], eax
        endif4:
        ;mov    eax, [middle]
        mov     eax, [ebp-8]
        ;cmp    eax, [last]
        cmp     eax, [ebp-12]
        jge     endif6
                mov     eax, [ebp-12]
                dec     eax
                mov     [ebp-12], eax
        endif6:
        jmp     rpt
endrpt:
        push    dword [ebp-8]
        push    dword [ebp+8]
        call    quicksort
        add     esp, 8

        mov     eax, [ebp-8]
        inc     eax
        push    dword [ebp+12]
        push    dword eax
        call    quicksort
        add     esp, 8
return:
        mov     esp, ebp
        pop     ebp
        ret


'Programing Language > Assembly' 카테고리의 다른 글

skeleton.asm  (0) 2013.05.21

skeleton.asm

Posted 2013. 5. 21. 12:44 by 김민식

%include "asm_io.inc"


        segment .data

        ;

        ; initialized data is put in the data segment here

        ;


        segment .text

        global  main

main:

        enter   0,0             ; setup stack frame

        pusha


        ;

        ; code is put in the text segment. Do not modify the code before

        ; or after this comment.

        ;


        popa

        mov     eax, 0    ; return value

        leave               ; leave stack frame

        ret


'Programing Language > Assembly' 카테고리의 다른 글

Quick sort with assembly  (0) 2013.05.27

시작

Posted 2013. 4. 22. 22:07 by 김민식

04. 22. 2013.




Invited from 슈이프, thx


'Small Talk > 일상' 카테고리의 다른 글

Sims4 VC++ 관련 1603 에러 해결법  (0) 2014.09.15

Postfixation

Posted 2013. 4. 22. 21:34 by 김민식
Data Structure Assignment


* 이 코드만으로는 작동되지 않음.