티스토리 뷰

프로그래밍/MFC

C# COM 참조하기 (Client)

에어버스 2017. 11. 12. 14:43

C# COM 참조하기

C# COM 만들기 :  http://petra.tistory.com/1130

소스파일 : http://petra.tistory.com/1136

1. 새 프로젝트를 Win32콘솔응용프로그램으로 만든다.

2. 빈 프로젝트를 체크 한다.

3. 프로젝트가 만들어지면 아래 그림처럼 솔루션탐색기에서 소스파일 폴더 선택하고 마우스 우측버튼 클릭해서 추가/새항목 메뉴를 선택한다.

4. 아래 그림처럼 C++파일을 선택하고 _COMTestClient 파일명을 지정하고 추가 버튼을 누른다.

5. 아래 처럼 빈 파일이 만들어 지면 저장한다.

6. C# COM 컴파일할때 만들어진 _COMTest.tlb 파일을 CPP소스 파일이 있는 폴더로 복사한다.
(_COMTest.dll 이 Debug 모드로 빌드되어 등록되었으면 Debug 폴더에 있는 tlb파일을 복사)

7. 아래 그림 처럼 1~16행까지 코드를 입력한다.

8. 코드를 입력하면 I_COMTest 에서 에러 표시가 날 수 있으니 이때는 아래와 같이 프로젝트검색을 반복해준다.

9. 빌드하면 출력창에 EXE 파일이 만들었다고 나온다. 이때 mscorlib.tlb 관련 경고 메시지 있으나실행하는데 문제가 없었다. 

10. 실행하면 아래 그림과 같이 결과 값이 나온다.

11. 경고 메시지가 불편하면 7번 코드상에서 3행 즉, mscorlib.tlb를 import하는 코드를 주석처리하면 경고 없이 빌드되고, 실행도 된다.

 

_COMTestClient.cpp 소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
#import <mscorlib.tlb> raw_interfaces_only
#import "_COMTest.tlb" no_namespace named_guids
 
int main(void)
{
    long nResult;
    I_COMTest* cpi;
    CoInitialize(NULL);
    HRESULT hr = CoCreateInstance(CLSID_Class1, NULL, CLSCTX_INPROC_SERVER, IID_I_COMTest, reinterpret_cast<void**>(&cpi));
    cpi->computedAdd(78&nResult);
    printf("7 + 8 = %d\n", nResult);
    CoUninitialize();
    getchar();
}
cs

 CoInitialize() 인식 못하면 #include <objbase.h> 추가한다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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