Visual Basic에서 작성한 ActiveX DLL을 Visual C++에서 호출하는 방법
http://himini80.x-y.net/zbxe/642003.07.28 23:50:02 (*.52.73.63) 183요약
Visual C++에서 제공하는 #import 문을 이용하여 Visual Basic에서 작성한 ActiveX DLL을 손쉽게 호출할 수 있습니다.
추가 정보
Visual Basic을 실행하여 간단한 ActiveX DLL을 작성한다. 프로젝트 명은 TestProject로 하고 클래스는 TClass로 합니다. TClass에 GetString이라는 Function을 아래와 같은 형태로 작성합니다.
Public Function GetString(ByVal Param1 As Integer) As String
#include "stdafx.h"
#include
#include
http://himini80.x-y.net/zbxe/642003.07.28 23:50:02 (*.52.73.63) 183요약
Visual C++에서 제공하는 #import 문을 이용하여 Visual Basic에서 작성한 ActiveX DLL을 손쉽게 호출할 수 있습니다.
추가 정보
Visual Basic을 실행하여 간단한 ActiveX DLL을 작성한다. 프로젝트 명은 TestProject로 하고 클래스는 TClass로 합니다. TClass에 GetString이라는 Function을 아래와 같은 형태로 작성합니다.
Public Function GetString(ByVal Param1 As Integer) As String
작성한 ActiveX DLL을 컴파일하여 DLL을 레지스트리에 등록합니다.
Visual C++을 실행하고 Win32 Console 프로그램 프로젝트를 새로 만듭니다.
아래와 같은 C++ 코드를 작성합니다.
Visual C++을 실행하고 Win32 Console 프로그램 프로젝트를 새로 만듭니다.
아래와 같은 C++ 코드를 작성합니다.
#include "stdafx.h"
#include
#include
// Visual Basic에서 생성한 ActiveX DLL을 import한다. 컴파일하면 이에 대한 TLH 파일이 생성된다.
#import "F:\TestDir\TestProject.dll" no_namespace
#import "F:\TestDir\TestProject.dll" no_namespace
// COM 초기화를 위한 클래스
class COMINIT {
public:
COMINIT() {
CoInitialize(NULL);
}
~COMINIT() {
CoUninitialize();
}
};
class COMINIT {
public:
COMINIT() {
CoInitialize(NULL);
}
~COMINIT() {
CoUninitialize();
}
};
COMINIT oInit;
int main(int argc, char* argv[])
{
{
// #import에 의해 생성된 COM Smart Pointer 클래스를 이용한다.
_TClassPtr oTClass;
// 객체를 생성한다.
oTClass.CreateInstance ("TestProject.TClass");
_TClassPtr oTClass;
// 객체를 생성한다.
oTClass.CreateInstance ("TestProject.TClass");
// ActiveX DLL이 제공하는 메쏘드 호출
_bstr_t ret = oTClass->GetString(10);
cout << (char*)ret << "\n";
_bstr_t ret = oTClass->GetString(10);
cout << (char*)ret << "\n";
// Release는 Smart Pointer에 의해 자동으로 이루어진다.
return 0;
}
return 0;
}