티스토리 뷰

원문 : here

현재 국산 PDA들 중에 PocketPC 라이센스 없이 CE.NET을 탑재한 제품들이 많이 나오고 있습니다. CE 3.0 또는 CE.NET 기기들의 가장 큰 문제점은 제품의 완성도와는 무관하게 어플리케이션이 그다지 풍부하지 못하다는 점이겠지요. 이 점은 HandheldPC에서도 마찬가지여서, 비록 HPC용 어플리케이션들이 CE용 어플리케이션보다는 많지만, PocketPC처럼 최신 프로그램들이 빨리빨리 제공되고 있지 못합니다.
이에 "나의 님프로"님의 정보를 토대로 비 PPC 기종에서 PPC 어플리케이션 사용법을 공개합니다.

* 주의 : 이 정보는 CE 기종들을 PocketPC로 바꾸는 방법이 아니며, 또한 상용 자료를 해킹하는데 사용할 수 없습니다. 또 이 과정에서 문제가 발생한다면 모두 시도한 개인의 책임입니다.

wince3.0용, ce.net 기반 PDA들은 pocketpc와 호환이 안된다고 알려져 있습니다.

그러면 한가지 생각해봅시다. OS는 둘다 wince3.0이라고 하는데 왜 호환이 안될까?

WinCE 어플리케이션을 짤 때는 wince3.0의 기본 API만 사용하여 작성하게 되며 pocketpc인 경우에는 pocketpc만의 API와 wince 3.0의 기본 API 둘 다를 사용하게 되어 있습니다.
(이 부분은 MSDN를 참조하시면 pocketpc용, wince용을 구별합니다)

여기에 문제의 답이 있습니다. Wince 3.0 API를 사용한 pocketpc 어플은 비Pocketpc에서도 큰 무리 없이 잘동작합니다. pocketpc만의 API를 쓴 어플들은 대부분 동작하지 않습니다. pocketpc API를 호출할 때 이미 wince에는 존재하지 않는 기능이므로 대부분 에러를 발생합니다.

즉 응용프로그램 오류란 메세지박스가 뜹니다.
오류내용은 대부분 해석하면(0xc000005인가?) 존재하지 않습니다란 의미를 가집니다. 무슨말이냐고요?
필요로 하는 dll이 없기 때문에 돌리지 못합니다.

대부분의 pocketpc어플리케이션에서 사용하는 기본 라이브러리가 있는데 agyshell.dll이 가장대표적입니다.

aygshell.dll의 API를 만들어서 pocketpc어플에 제공이 된다면 대부분 동작합니다. 물론 aygshell.dll외에 더 필요한 dll는 뭐가 있을까? 오락같은 경우는 gx.dll만 필요로 하는 경우가 많습니다.
대표적인 어플들이, ZIO사의 오락들.. 동작하는 gx.dll만 있으면 어떤 PDA(wince기반)에서든 잘동작할 것으로 보여집니다.

pocketmap, comicguru등의 경우에는 note_prj.dll, doc_list.dll등입니다.

이런 것들을 제대로 만들었는데도 불구하고 문제가 되는 어플리케이션들이 있는데 바도 MFC를 이용하는 것들입니다.

mfcce300.dll인데, pocketpc와 wince다 이 화일을 가지고 있습니다만 서로 호환이 안됩니다. 즉 안돌죠. ^^

어쨌든, 어떤 dll를 사용하는 걸 알고 싶을 때는 hex edit를 가지고 실행화일을 열어서 dll를 찾아보면 찾아볼 수 있습니다.

그외 PDA에서 바로 확인할 수 있는데 언젠가 제가 게시판에 올렸던 유용한 유틸리티란 글에서 소개했던 사이트에서 찾을 수 있는데. pe.exe란 툴입니다.
pocketpc, wince용 둘 다 제공하며 어떤 dll를 필요로 하는지 실제 시스템에 존재하는지까지 알려주며 dll내의 어떤 함수를 호출하는지 (실제로는 hint-확실치 않군요-라는 걸 보여줍니다)를 알려주는 유용한 툴입니다.

mfcce300.dll를 이용하는 화일은 할 수 없이 hexedit로 적당히 다른 이름으로 변경한 후 pocketpc용 mfcce300.dll를 복사해서 넣으면 일단 위에 이야기했던 모든 화일을 준비했을 때 일단 동작합니다. mfc를 사용하는 어플은 동작하지 않는다고 해도 어쩔 수 없습니다만 대부분 aygshell.dll등을 이용하기 때문에 일단 윈도우가 뜰겁니다. ^_^


설명이 복잡해졌는데. 아주 간단히 실행법만 설명해보자면.
1. agyshell.dll, gx.dll 을 구합니다.(이 자료를 직접 올려드리지 못함을 양해해주시기 바랍니다. 그러나 약간만 서핑하시면 충분히 찾으실 수 있습니다.)
2. 구한 파일을 PDA의 /Windows 폴더 안에 넣습니다.

이상으로 가장 기본적인 준비는 마친 셈입니다.
이제 구동을 원하는 PocketPC의 cab 파일 혹은 바이너리 실행파일(.exe)를 구하여 적당한 디렉토리에 복사해넣고 실행시켜봅니다. 대부분의 기본 어플리케이션은 이상만으로 충분히 실행될 겁니다.(다이아몬드 마인 등의 게임, WinamPAQ 같은 프로그램)

3. MFC 라이브러리를 이용하여 작성된 어플리케이션의 경우에는 별도로 PocketPC용 MFC 라이브러리도 같이 넣어줘야합니다. PocketPC용 mfcce300.dll을 구한 후, mfcce301.dll 등으로 이름을 바꿔줍니다.
해당 프로그램의 실행화일을 PC의 윈도우로 복사해 옮깁니다.
그후 텍스트화일 에디터 (ultraedit등)를 이용해서 실행화일을 연 후 찾기 기능을 이용해서 mfcce300.dll이라는 문자열을 찾아서 mfcce301.dll로 바꿔준후 저장합니다. 이렇게 수정된 실행화일을 다시 PDA로 덮어씌웁니다.

4. 인스톨러(setup.exe)로 설치하는 PPC용 프로그램 대부분은 인스톨시 프로그램이 현재 PDA와 호환되지 않는다는 메시지와 함께 인스톨이 되지 않습니다. 이럴 경우 Program files\microsoft activesync 폴더 또는 Program files 폴더에 XXXX.cab 화일이 있습니다. 이것을 PDA로 복사한 후 태핑하여 설치합니다.(경고 무시)

5. 이외에 특별한 dll을 요구하는 프로그램들이 있습니다. 이 경우에는 개발자 모임 게시판을 참조하셔서 직접 dll을 제작해주어야합니다. (일반 유저에게는 조금 무리겠죠? ^^;)

6. PocketPC 2002용 어플들 보다는 PocketPC 2000용 어플들이 잘 붙는 편입니다. 만약 같은 프로그램이 2002용 / 2000용으로 각각 나뉘어져 있다면 2000용을 이용하시기 바랍니다.

7. 이상의 Tip은 CE.NET 기기뿐만 아니라, HPC(조나다, 모디아 등)에서도 적용될 수 있습니다. 단 해당 기종의 CPU용 파일들을 이용하셔야합니다. (모디아의 경우 MIPS CPU를 사용하므로 주의할 것)

8. 모든 PocketPC 어플이 가능하지는 않습니다. 특히 하드웨어에 종속적으로 제작된 어플리케이션들의 경우에는 시스템에 심각한 문제를 일으킬 수도 있습니다.



-이 글은 todayppc라는 홈피에서 퍼온(무단...인가..) 글입니다
ce에서 라고만 되어 있고 넥시오에서는 아직 해보지는 않았네요
첨부파일은 위에 언급되어 있는 dll파일들입니다
찾는데 좀 시간이 걸렸네여...
("스스로 찾아보셈~")하고 다분히 악의적으로 파일을 안올리고
그냥 게시판에 쓸까하다가...'나는 원래 이렇게 나쁜넘이었나...'하는 생각에..^^;;
잘들 쓰세영.


[추가 내용]
GX.DLL등 파일은 GAPI를 다운받으시면됩니다