티스토리 뷰

프로그래밍/MFC

ATL COM 사용하기

에어버스 2016. 9. 17. 17:28

http://tansanc.tistory.com/322

1
#import "C:\Users\USER\Documents\Visual Studio 2015\Projects\Calculator\Debug\Calculatpor.dll" raw_interfaces_only
cs

위 처럼 dll 위치를 지정하고 컴파일하면 파일을 찾을 수 없다는 오류가 발생해서 클라이언트 실행파일이 있는 곳에 dll 복사해서 진행한다.

dll 파일이 레지스트리에 등록되어 있지 않으면 dll을 관리자 모드로 도스창 띄워 regsvr32 Calculator.dll 로 등록해야 한다. 등록하지 않으면 8행에서 NULL 값을 가져 바로 리턴된다.

  등록

 

dll 파일을 프로젝트에 복사하고 DLL 사용하는 헤더 파일에 위 코드처럼 추가한다.

 

1
2
#import "./Calculator.dll" raw_interfaces_only
using namespace CalculatorLib;
cs

 아래 1행을 위 코드로 대체 가능하다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#import "./Calculator.dll" no_namespace named_guids
 
BOOL CCalClient2Dlg::OnInitDialog()
{
...
CoInitialize(NULL);
    m_spSO.CoCreateInstance(__uuidof(SimpleOperator));
    if (m_spSO == NULL)
        return FALSE;
    m_fX = 3;
    m_fY = 4;
    m_spSO->put_X(m_fX);
    m_spSO->put_Y(m_fY);
    CString str;
    float rst;
    m_spSO->get_X(&rst);
    str.Format(L"%f", rst);
    AfxMessageBox(str);
    return TRUE;  // 포커스를 컨트롤에 설정하지 않으면 TRUE를 반환합니다.
}
cs

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    CoInitialize(NULL);
    m_spSO.CoCreateInstance(__uuidof(SimpleOperator));
    if (m_spSO == NULL)
        return FALSE;
    m_fX = 3;
    m_fY = 4;
    m_spSO->put_X(m_fX);
    m_spSO->put_Y(m_fY);
    CString str;
    double rst;
    m_spSO->Add(&rst); // VS2015에서 함수 호출 인수가 많다고 나오나 무시한다.
    str.Format(L"%f", rst);
    AfxMessageBox(str);
    return TRUE;  // 포커스를 컨트롤에 설정하지 않으면 TRUE를 반환합니다.
}
cs

 

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