|
만들어진 소스를 DLL로 만들려고 합니다.
볼랜드포럼 검색하다가 DLL 만드는 기본소스가 있어서 그것을 조금 수정해서 테스트 DLL을 만들어봤습니다.
밑의 HelloDll.h와 HelloDll.cpp로 DLL을 만들었습니다.
/****HelloDll.h***********************************************/
#ifdef __BUILDING_THE_DLL
#define __EXPORT_TYPE __export
#else
#define __EXPORT_TYPE __import
#endif
class TNode
{
private:
int a;
public:
int getA();
void setA(int val);
};
class TDynamic
{
private:
int b;
TNode node;
public:
int getB();
void setB(int val);
int getNodeA();
void setNodeA(int val);
};
/****HelloDll.cpp***********************************************/
#include <vcl.h>
#pragma hdrstop
#include "HelloDll.h"
int TNode::getA()
{
return a;
}
void TNode::setA(int val)
{
a = val;
}
int TDynamic::getB()
{
return b;
}
void TDynamic::setB(int val)
{
b = val;
}
int TDynamic::getNodeA()
{
return node.getA();
}
void TDynamic::setNodeA(int val)
{
node.setA(val);
}
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{
return 1;
}
//---------------------------------------------------------------------------
만들어진 DLL과 lib 파일 h 파일을 빈 프로젝트에 추가시킨 후, 컴파일을 해보면...
DLL에 추가된 함수를 호출할때 호출된 함수에 대해서 unresolved external 에러가 발생합니다.
//어플리케이션 프로그램
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TDynamic ttt;
ShowMessage(IntToStr(dyn.getNodeA())); //<--- 여기서 getNodeA()에대해서 unresolved external 에러 발생
}
DLL안에 있는 클래스 변수를 선언해서 멤버 함수를 호출하면 위와 같은 에러가 나네요...
DLL에 포함되어 있는 각종 클래스 및 멤버변수, 함수등을 외부에서 맘대로 조작을 시킬려고 합니다.
위 에러를 해결하기 위해선 어떻게 해야 하나요?
|