23
iOS 로 로로로로로 이이이 ([email protected] ) #kasastudy(2012.03.07)

아이폰에 포팅해보기

Embed Size (px)

DESCRIPTION

#kasas

Citation preview

Page 1: 아이폰에 포팅해보기

iOS 로 포팅해보기이창희 ([email protected]

)#kasastudy(2012.03.07)

Page 2: 아이폰에 포팅해보기

개요• 기존에 있는 엔진을 이용해서 , 모바일용

엔진으로 변신시켜보자 !– DirectX + OpenGL ES–WIN32 + __APPLE__

• 하나의 엔진 코드로 윈도우와 모바일을 모두 처리한다 . (A.K.A 슈퍼클래스 )

• 변신 캐 ~ 삽질기를 소개한다 .

Page 3: 아이폰에 포팅해보기
Page 4: 아이폰에 포팅해보기

엔진에 OpenGL 통합하기

( 극단적인 다기능 추구 )

Page 6: 아이폰에 포팅해보기
Page 7: 아이폰에 포팅해보기

윈도우와 맥 환경 구분• 전처리로 구분–WIN32– __APPLE__

Page 8: 아이폰에 포팅해보기

Mac 으로 옮겨보자 !

• Mac 자체가 디스 ~

• 일단 맥하고 친해지는 것이 중요했음 .– 키보드하고 마우스는 보기에만 좋더라 ..– 아직도 친해지지 못했음 . ㅜㅜ

• 모르겠고 , 일단 xcode 를 열어보자 !!!

Page 9: 아이폰에 포팅해보기

이제 뭘 하지 ?!..... -_-;;

Page 10: 아이폰에 포팅해보기

xcode 로 소스 옮기기• 모르겠다… 도움 요청 !

– 세영님과 찬호님에게 무작정 물어보기 시작 !

– ( 연락이 두절된 차태상군은 저주하겠음 !!!)

• 방법1. 윈도우 기반에서 mac 에서 돌아갈 수 있는 dll 을 만들어서

가지고 오는 방법이 있다고 함2. xcode 에서 프로젝트를 하나 생성해서 , 소스코드를

추가해서 , 라이브러리를 만드는 방법

• 2 번 방법을 선택하기로 함 .. (1 번은 모르겠다 !)

Page 11: 아이폰에 포팅해보기

Xcode 에서 라이브러리 만들기• “cocos touch static library” 라는 것으로

빈 라이브러리 프로젝트를 하나 만들었음 .• 빈 프로젝트에 무작정 소스코드를 모두 추가하고 ,

용감하게 빌드 버튼을 눌렀음 !

• 컴파일 에러 22878 개 !!!! 뙇 !• 에러 메시지는 생전 처음 보는 것들… ㅠㅠ

Page 12: 아이폰에 포팅해보기
Page 13: 아이폰에 포팅해보기

정신차리고 다시 …• 빈 프로젝트에 다른 코드들을 포함하고 있지 않는

독립적인 코드들부터 추가해보기로 함 . (Math, Util, …)

• 조금씩 자신감이 생기면서 , 연관성이 조금씩 큰 코드들을 추가해나가기 시작 !

• 자신감이 완전 붙어서 , Core 클래스들을 붙여보기로 함 (OpenGL ES 관련 )– 컴파일에러 : 16758 개로 증가 !!!

• 근성으로 수정 !!!!• 될 때까지 !!!!!

Page 14: 아이폰에 포팅해보기

일단 컴파일은 성공 !!!

• 이제부터 진짜로 디버깅 하면 되요 ~ ㅜㅜ

Page 15: 아이폰에 포팅해보기

대체로 이런 문제들…• Stdlib 가 아닌 window 에서 많이 확장된 사용하는 확장 함수들이 전부

에러…– 특히 , unicode 를 사용하면 , 어마어마하다 .– “_” 가 붙어서 시작하는 함수들을 거의 사용이 불가능 .

• _wtoi, _wtof, _wtol, _wfopen, _wsplitpath 등…– _T(), _ASSERT(), _countof() 와 매크로 없음– BYTE, DWORD, BOOL, LONG 선언 없음– Stl 의 인터페이스도 조금 다르다 .– Template 내부에서 사용할 때에는 , typename 으로 type 을 명확히

해주어야 함 .

• #include 순서에 민감하다 .• #include <opengles/opengles.h> -> #include <open-

gles.h> 로…• 매크로 문법이 조금 다르다 .

– #define _WT(A) L#A // __TT( 줸장 ) == L” 줸장”– #deifne _MT(A) L## #A // __TT( 줸장 ) == L” 줸장”

Page 16: 아이폰에 포팅해보기

코드 페이지…• 코드에 한글 문자열을 사용했을 때…

– 윈도우에서 UTF-8 로 저장해서 해결 ~– 하지만 , mac 에서는 “ Text Encoding” 을 Korean 으로…

• XCODE 에서 코드를 수정하고 , 소스를 윈도우로 가지고 오면 , 코드페이지가 안 맞아서 한글도 깨지고 , 코드도 다 흐트러짐 !– 파일 형식과 Line Ending 을 윈도우 환경으로 맞춰줘도

안되네 ?– 그런 이유로 visualstudio 에서만 코딩 -> xcode

에서는 컴파일만… gee– ( 해결책에 대한 제보 부탁 !!!)

Page 17: 아이폰에 포팅해보기

기타 문제점들• C++ 코드 내에서 objective-C 코드를 사용한다면 ,

파일형식을 “ .objcpp” 로 지정해주어야 한다 .• 외부라이브러리

– Zlib 과 같은 외부라이브러리는 별도의 프로젝트를 만들어서 빌드해서 링크해도 상관이 없다고 하지만 , 대체로 그냥 엔진 프로젝트에 외부라이브러리 코드를 같이 추가해서 빌드해서 사용하는 듯…

• 유니코드 변환– MultiByteToWideChar 를 사용할 수 없으므로 ,

대체함수로 만들어주어야 함 .– Mbstowcs 과 같은 함수나 iconv 를 이용해서 변환을 한다 .

• SetLocal(LC_ALL, “”) 설정 주의• iconv : linux 계열에서 사용

Page 18: 아이폰에 포팅해보기

윈도우에서 깨지지 않도록…( 하지만 안돼… ㅜㅜ )

C++ 코드에서 Objective-C 를 사용한다면…

Page 19: 아이폰에 포팅해보기

Window에서 작업 .

Mac 에서 확인

음악이나 ...

Page 20: 아이폰에 포팅해보기

…ING

• 현재 계속 작업 중…– 아직 추가해야 할 파일이 100 개는 남았다 .

• 여전히 xcode 랑 친해지지 못하고 있음 .– Xcode 를 4.2 로 업데이트 했더니 , 이젠 xcode 도 모르겠다 .. ㅜㅜ ;

• Mac 과 Win 을 오가는 2 대의 작업은 정신적 피로도가 상당히 높다 .– Mac 의 키보드와 마우스를 장시간 사용하니 , 손목이 돌아갈 거 같음 .– 5 시간 정도 작업하면 , 점점 두 PC 간의 자판배열과 마우스 조작에 혼돈이 오기 시작 ! • 노트북 마우스를 쓰담~ 쓰담 하기 시작 !• 한 / 영 전환과 control 위치가 … -_-;;

Page 21: 아이폰에 포팅해보기

결론• 이태리 장인의 한 땀 한 땀의 노력이 필요한 작업임

– 별로 추천해주고 싶은 작업이 아니다 !

• 자료를 검색해봐도 , c++ 을 이용한 native 개발에 대한 팁은 별로 없던데 ?!– KLDP.org 에서 리눅스 개발에 대한 팁 참조– Stack Overflow 라는 사이트에서 많이 참조

• 오픈소스프로젝트를 참고하자– Irricht 나 Orge3D 의 경우 , iOS 용으로 이미 포팅이 되어 있음 .– 프로젝트 설정 및 OpenGL ES 처리 등을 참고하면 좋다 .

• 최대한 경험있는 지인들에게 도움을 요청하자 !– Xcode 환경 설정 , mac 에서의 처리에 대한 약간의 팁만 알려줘도 , 많은

삽질을 줄일 수 있다 .

–저 좀 살려주세요 ! ㅜㅜ

Page 22: 아이폰에 포팅해보기

참고자료• 전처리 정의하기

– http://jjoong2.tistory.com/entry/xcode-preprocessor-setting

• 매크로 정의 ...– http://stackoverflow.com/questions/26

0125/how-to-use-wide-string-literals-in-c-without-putting-l-in-front-of-each-one

• Static library 만들기– http://gyuha.tistory.com/414

• iconv 라이브러리 ??– http://yongho1037.tistory.com/entry/C-

iconv%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-%EB%AC%B8%EC%9E%90-%EC%9D%B8%EC%BD%94%EB%94%A9-%EB%B0%A9%EC%8B%9D-%EB%B3%80%EA%B2%BD-By-%EC%9A%A9%ED%98%B8

– http://stackoverflow.com/questions/2162390/iconv-encoding-conversion-problem

Page 23: 아이폰에 포팅해보기

Q / A