R
Mit dieser DLL-Schnittstelle kannst Du zwar auf Funktionen des CDevice-Objekts zugreifen, jedoch ausserhalb der DLL kein Objekt vom Typ CDevice anlegen, da dafür dem Compiler die Grösse des Objekts bekannt sein muss, welche Du ja nicht rausgeben darfst.
Folgendes Workaround:
// Header
class DLLPORT IDevice
{
public:
virtual void Init(HWND MainHwnd,int SreenWidth,int ScreenHeight,bool vsync)=0;
virtual void Destroy(void)=0;
virtual void ClearScreen(DWORD color)=0;
};
IDevice* DLLPORT CreateDeviceAndInit( HWND MainHwnd,int ScreenWidth,int ScreenHeight, bool vsync);
// in DLL (*.cpp)
class CDevice : public IDevice
{
// ...
};
CDevice::Destroy()
{
delete this;
}
CDevice* CreateDeviceAndInit(HWND MainHwnd,int SreenWidth,int ScreenHeight,bool vsync)
{
CDevice* pDevice = new CDevice;
pDevice->Init( MainHwnd, ScreenWidth, ScreenHeight, vsync);
return pDevice;
}
[ Dieser Beitrag wurde am 07.03.2003 um 16:21 Uhr von RenéG editiert. ]