반응형
Visual Studio 2005에서 Windows Mobile 5.0 프로젝트를 만들고, 그걸 실제 PDA에 올려서 바로 실행하면, 콘솔 어플리케이션으로 되어 있어도 화면에서는 아무것도 볼 수 없다. Windows CE(Mobile) 계열에는 기본적으로 콘솔 창이 없기 때문이다.

대신에, PDA와 PC를 연결해 놓고 Visual Studio에서 디버그를 하면 "출력" 창을 통해 printf로 찍히는 메세지를 볼 수 있다. 이건 정말 많은 도움이 된다.

그.런.데,
분명히 printf를 통해 특정 문자열을 출력하도록 해 놨는데도 아무 반응도 없이 printf를 그냥 지나가 버리는 경우가 있다.
왜 그런지 알 수가 없어서 string 타입으로 되어 있는 변수를 char*로 변환도 해보고, char[1000]로 만들어서 직접 복사해 넣어보기도 하고, 별별 짓을 다 했는데도 유독 그 문자열만 찍히지 않는 거다.

뭥미...
물론 cout을 쓰니 출력'만큼은' 잘 해 주었다. 하지만 cout으로 찍히는 메세지를 출력창을 통해서 보면 느릿느릿, 심지어 내 타자속도보다도 느리게 출력해 주어서 도저히 쓸 수가 없었다. 여러 대의 PDA로 서로 Wi-Fi를 통해 메세지를 주고받으며 테스트하기 때문에 이놈의 cout 메시지 보다가 다른 기기들과 속도가 안맞아서 제대로 진행이 안되기 때문이다.

네이버에서는 당연히 검색해도 안나오고,
(모바일 개발환경 관련된 글 자체가 별로 없더라 ㅠㅠ)
구글에서 영어로 검색하다가 증거가 유력한 글 발견!

"WINCE 5.0 printf string length limitation."

... ㅠ_ㅠ
256글자가 넘어가는 문자열은 소리소문 없이 그냥 무시당한다고 한다.
아아아아아앙ㄹ랑ㄴㅁㄹㄴㄻㄹㄷㄹㄷㅈㄴㄷㅁㄴㅇ
다른 모바일 플랫폼의 개발환경은 어떤지 모르지만, 보통의 win32 개발환경보다는 여러가지로 열악하다. ㅠㅠ

반응형
블로그 이미지

Bryan_

,
반응형
- '네트워크 연결'에서 원하는 네트워크의 속성에 간다.
- 연결에 사용할 장치에 랜카드의 이름이 나오고, 옆에 [구성...] 단추를 클릭.
- 고급 탭에 가면 속성 목록에 Network Address 또는 Override Network Address가 있다. 선택하고 '없음'으로 선택된 것을 '값'으로 바꾸고 원하는 맥 주소를 입력한 뒤 확인.
- 자동으로 네트워크 연결이 리셋된다. 이후 커맨드 창에서 ipconfig /all 명령을 통해 맥 주소가 바뀐 것을 확인할 수 있다.
- 원상복구는 설정창에서 다시 '없음'을 선택해줄 것.


인텔 계열은 설정창 모양이 달라서 안될 수도 있다. =_=
이 때는 레지스트리를 수정해야 하는데,

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}

위 경로까지 가서 랜카드 이름의 일부분으로(Realtek RTL8168) 키값 검색을 하거나, 0000부터 있는 하위의 여러 키들 중에서 DriverDesc에 원하는 랜카드 이름이 적힌 키를 찾는다.
그 안에서 NetworkAddress라는 이름으로 DWORD값을 만든 후에 원하는 맥 주소를 입력해줄 것.
원상복구하려면 생성한 NetworkAddress값을 지워줄 것.

반응형
블로그 이미지

Bryan_

,
반응형
/etc/network/interfaces 파일을 연다.
그리고 eth0 세팅을 찾아서 아래와 같이 수정한다.

(예) eth0 카드의 고정IP주소가 192.168.0.100, 서브넷마스크가 255.255.255.0, 기본 게이트웨이가 192.168.0.1, 그리고 도메인네임 서버가 220.90.215.11일 경우:

auto eth0   
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameserver 220.90.215.11

sudo /etc/init.d/networking restart 명령으로 네트워크 재시작.

반응형
블로그 이미지

Bryan_

,
반응형
윈도우를 부팅할 때나 사용중에 실행되는 수많은 프로세스들에 대한 정보가 궁금하다면 여기 윈도우 프로세스들의 정보를 모아 놓은 페이지를 소개하고 싶다.

http://www.liutilities.com/products/wintaskspro/processlibrary/application/

위 페이지에는 응용프로그램을 설치했을 때 등록되는 시작프로그램, 윈도우 시스템의 구동을 위해 필수적인 중요한 프로세스부터 악성코드와 바이러스까지 모든 프로세스의 이름과 설명이 총망라되어 있다.
Top Security Risks 메뉴에는 시스템에 위험한 악성프로그램들이,
Top System Processes 메뉴에는 윈도우에 매우 중요한 시스템 프로세스들이,
Top Applications 메뉴에는 각종 응용프로그램과 관련된 프로세스들이 알파벳순으로 정리되어 있다.

영어로 되어 있어서 영어울렁증이 있는 사람들에게는 좀 불편할 수도 있지만, 어떤 기능을 하는 프로그램인지는 이해할 수 있도록 짧고 간단한 설명이 맨 위의 파란 상자 안에 적혀 있으니 그것만 봐도 충분하다.
평소에 본 적이 없는 낯선 프로세스가 실행되고 있을 때 그 정체가 궁금하다면 이 사이트를 이용해 보아요! ^^
반응형
블로그 이미지

Bryan_

,
반응형
#pragma는 컴파일할 때 지정해 주는 사항들에 대한 표현이다.
라이브러리를 첨부하거나 컴파일 하는 동안 보여주는 경고 일부를 무시하는 등의 설정을 할 수 있다.

#pragma comment(lib, "ws2_32.lib")

이것은 ws2_32.lib 파일을 컴파일 시에 추가하겠다는 의미이다.
VS .NET이나 Visual C++ .NET을 쓸 때 프로젝트 속성 창을 통해 설정해줄 수도 있는데,
솔루션이름에서 마우스 오른쪽 단추 - 속성 -> 구성 속성 - 링커 - 입력 에 온 뒤
오른쪽 창의 '추가 종속성' 부분에 ws2_32.lib파일을 적어 주는 것과 같다.

.NET에서 이런 설정을 해 주지 않으면 include가 제대로 되어 있어도
'symbol' 외부 기호('function' 함수에서 참조)를 확인하지 못했습니다.
와 같은 링크 에러(LNK2019)를 발생시킨다.
반응형
블로그 이미지

Bryan_

,