PSD, В прошлом году Громом поднималась похожая тема. А теперь по сушеству вопроса
Прототип объявляеш так
typedef СDevice * (__stdcall *TGetDeviceModule) (void );
В Dll стандартизировано применение типа вызова функции stdcall. Хотя есть даже стандартные библиотеки с другим типом вызова.
Шаблон построения твоей ДЛЛ
CPP Файл
#define DLLLOADAPI extern "C" __declspec(dllexport)
#include "CDeviceDLL.h"
СDevice * GetDeviceModule (void )
{
return (СDevice *)new СDeviceKm5 ;
}
BOOL WINAPI DllMain(HINSTANCE hinst, unsigned long reason, void*)
{
switch( reason )
{
case DLL_PROCESS_ATTACH:
// Initialize once for each new process.
// Return FALSE to fail DLL load.
break;
case DLL_THREAD_ATTACH:
// Do thread-specific initialization.
break;
case DLL_THREAD_DETACH:
// Do thread-specific cleanup.
break;
case DLL_PROCESS_DETACH:
// Perform any necessary cleanup.
break;
}
return TRUE; // Successful DLL_PROCESS_ATTACH.
}
h файл
#ifndef DLLLOADAPI
#define DLLLOADAPI extern "C" __declspec(dllimport)
#endif
#include <windows.h>
//-------------------------------------------------------------------
DLLLOADAPI СDevice * __stdcall GetDeviceModule (void );
//-------------------------------------------------------------------
def файл
LIBRARY CDeviceDLL
DESCRIPTION 'Device DLL'
EXPORTS
GetDeviceModule @1
Все три файла вставляеш в проект Dll .