티스토리 뷰
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 |