请问动态库调用有关问题

请教动态库调用问题
各位大侠,小弟遇到一个问题:

DLLTest.h

#pragma once

#include <Windows.h>

class CDealPic
{
public:
CDealPic();

int Init();
};

extern "C"__declspec(dllexport) CDealPic * CreateImageInstance(); 
extern "C"__declspec(dllexport) int DestroyImageInstance(CDealPic * pObj);


DLLTest.cpp:

#include "DLLTest.h"

CDealPic::CDealPic()
{
}

int CDealPic::Init()
{
return 0;
}





主程序:
#include <windows.h>

#include "../DLLTest/DLLTest.h"


void main(void)
{
typedef CDealPic* ( * lCreateImageInstance)();
typedef int (*lDestroyImageInstance)(CDealPic* pObj);

HINSTANCE hDLL;
lCreateImageInstance PPP;

hDLL=LoadLibrary("DLLTest.dll");
 PPP = (lCreateImageInstance)GetProcAddress(hDLL,"CreateImageInstance");

CDealPic* pDealPic = PPP();

pDealPic->Init();
}



错误:pDealPic->Init();链接错误。
error LNK2019: unresolved external symbol "public: int __thiscall CDealPic::Init(void)" (?Init@CDealPic@@QAEHXZ) referenced in function _main


请各位大侠鼎力相助!

------解决方案--------------------
CDealPic这个类要抽象出基类或者接口  并链接到main里面
才能用这种动态方式加载执行
你的代码只有动态加载  但是main没链接CDealPic进去 他不知道Init的信息
------解决方案--------------------
动态链接库导出类比较麻烦. 无论构造析构还是里面动态分配都会是潜在问题.

你可以导出类指针, 但是指针应该传入DLL接口在里面调用类方法. 

在上面例子里面, DLL要么定义一个新接口. 要么直接在lCreateImageInstance里面把init给调用了. 如果调用失败, 析构并且, 返回NULL.