schreibe meien DLLs meistens so:
welchen exporttyp man auch immer will:
#if 0
# ifdef DLL_EXPORTS
# define DLL_API __declspec(dllexport)
# else
# define DLL_API __declspec(dllimport)
# endif
#else
# ifdef DLL_EXPORTS
# define DLL_API
# else
# define DLL_API
# endif
#endif
/* ohne (dllexport) muss noch eine datei 'dll.exp' angelegt werden, in der */
/* fuer jede exportierte funktion so ein eintrag existiert: */
/* EXPORTS Info */
dll_source.c
DLL_API long APIENTRY Info
(
long lLen,
char *pszInfo
)
{
long lRet=0;
...
return (lRet);
}
benutzt wird eine dll dann folgendermassen (ohne lib und header muss aber trotzdem bekannt sein, welche parameter benoetigt werden!):
HANDLE hMod;
FARPROC procINFO;
char szText[64];
hMod = LoadLibrary ("dll"); /* die dll wird im programm-verzeichnis */
/* und im PATH gesucht */
if (hMod != NULL)
{
procINFO = GetProcAddress (
pgdr->hMod, "Info");
if (!procInfo)
{
MessageBox (pgdr->hwndMain,
"DLL nicht initialisiert!",
"DLL", MB_OK);
}
else
{
lRet = (*procINFO)(sizeof (szText), szText); /* funktion aufrufen */
}
FreeLibrary (hMod); /* DLL wieder freigeben*/
}
|