64,648
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
#define DLLAPI extern "C" _declspec(dllexport)
#include "DllCode.h"
class CB: public CA
{
public:
CB::CB(char *str){ m_pBuf = str; }
CB::~CB(){}
virtual char *GetStr(){ return m_pBuf;}
virtual void test(){ printf("testtesttesttesttest\n");}
private:
char *m_pBuf;
};
DLLAPI void InitObj(char *str, CA** pCA)
{
CB* pCB = new CB(str);
*pCA = (CA*)pCB;
}
DLLAPI void FreeObj(CA *pCA)
{
delete (CB*)pCA;
}
#ifdef DLLAPI
#else
#define DLLAPI extern "C" _declspec(dllimport)
#endif
class CA
{
public:
virtual char *GetStr() = 0;
virtual void test() = 0;
};
DLLAPI void InitObj(char *str, CA** pCA);
DLLAPI void FreeObj(CA *pCA);
EXPORTS
InitObj
FreeObj
#pragma comment(lib, "../SampleDll/Debug/SampleDll.lib")
#include "../SampleDll/DllCode.h"
#include <iostream>
using namespace std;
int main()
{
CA *pCA = NULL;
InitObj("TestClassOK~!", &pCA);
printf("%s\n", pCA->GetStr());
pCA->test();
FreeObj(pCA);
getchar();
return 0;
}