달력

12

« 2024/12 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

WinCE5에서 외부 COM DLL을 로드하기 위하여 초기화를 해주는

CoInitialize()라는 함수는 WinCE5에서 지원하지 않는다

 

MSDN을 살펴 본 결과

역시... 죽으란 법은 없나보다

 

This function is not supported. Instead, your application should call CoInitializeEx using the COINIT_MULTITHREADED constant in the second parameter, like this:


CoInitializeEx(x, COINIT_MULTITHREADED);


If your application uses calls to CoInitialize, you can use a #define directive to map CoInitialize to CoInitializeEx, like this:


#define CoInitialize(x)     CoInitializeEx(x, COINIT_MULTITHREADED)

 

역시 MSDN…

:
Posted by Lunaness

WinCE5에서 ATL을 이용하여 DLL을 만들 기회가 생겼다

일단 COM관련 서적을 참고하여 간단한 예제를 만들고 컴파일을 하였는데

이게 뭔 에러인가!

c:\source\atltest\server\APTMain.h(21) : fatal error C1189: #error :  "단일 스레드 COM 개체는 전체 DCOM 지원을 포함하지 않는 Windows Mobile 플랫폼과 같은 Windows CE 플랫폼에서 제대로 지원되지 않습니다. ATL이 단일 스레드 COM 개체의 생성을 지원하고 단일 스레드 COM 개체 구현을 사용할 수 있도록 _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA를 정의하십시오. rgs 파일의 스레딩 모델은 DCOM Windows CE가 아닌 플랫폼에서 지원되는 유일한 스레딩 모델이므로 'Free'로 설정되어 있습니다."

 

일단 정보의 보고라 불리는 MSDN을 찾아보기로 하였다

MSDN 링크 - 방법: 새 Visual C++ 장치 프로젝트 만들기

 

그 중에 이런 내용이 있었다

Note참고

컴파일러에서 CE_ALLOW_SINGLE_THREADED_OBJECTS_IN 정의에 대한 경고가 발생하면 _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA를 정의하고 stdafx.h에 플래그를 정의하십시오. 그렇게 하려면 stdafx.h 헤더 파일을 열고 파일 위쪽 부분에
 #define _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA를 추가합니다.

시키는 대로 하는 것이 우리내 팔자…

 

일단 stdafx.h파일을 열고

#pragma once
#define _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA

#pragma once 밑에 넣어주고 다시 컴파일!

 

바로 해결되었다.....

:
Posted by Lunaness