윈도우 환경이라고 가정하고 답변 드립니다. 개념만 간단히 설명드릴께요..
1. 우선 DLL이나 lib 프로젝트를 만듭니다.
개인적으로는 DLL 프로젝트를 추천합니다
2. 이미 작성된 C++ 소스를 프로젝트에 모두 추가하세요.
그곳에 존재하는 어떤 클래스의 이름을 CppClass라고 가정합니다.
그 클래스에 다음과 같은 인터페이스가 있다고 가정합시다.
ex)
class CppClass
{
public:
void Initialize(); // 객체 초기화
void Finalize(); // 객체 정리
public:
bool Operation(int a); // 어떤 호출하고 싶은 멤버
};
3. 새로운 이름의 소스파일과 헤더파일을 만들어 추가합니다.
여기서는 A.h A.cpp라고 가정합니다.
4. A.cpp에 CppClass의 static 전역객체를 하나 만듭니다.
static CppClass s_myClass;
5. 이 객체에 초기화가 필요하다면 A.cpp에
이 객체를 초기화 시키는 C 함수를 하나 만들어 넣습니다.
ex)
void __cdecl Initialize()
{
s_myClass.Initialize();
}
void __cdecl Finalize()
{
s_myClass.Finalize();
}
6. 이 객체에 호출하고 싶은 함수를 랩핑하는 C함수를 하나 만들어 넣습니다.
int __cdecl WrapperFunc(int a)
{
bool bSuccess = s_myClass.Operation(a);
if(bSuccess)
return 1;
else
return 0;
}
7 A.h 파일에 위 세개의 인터페이스들의 프로토타입을 포함시킵니다.
void __cdecl Initialize();
void __cdecl Finalize();
int __cdecl WrapperFunc(int a);
8. 컴파일하고 링크해서 DLL이나 LIB 파일을 만들어냅니다.
----------------------------------
9. 이제 만들어진 DLL이나 LIB 파일을 사용하는 C 프로젝트를 만듭니다.
10, A.h를 인클루드하고 사용하고 원하는 인터페이스를 호출하면 됩니다.
ex)
Initialize();
WrapperFunc(10);
Finalize();
그럼...
댓글 없음:
댓글 쓰기