Imaginons que ta dll exporte cette fonction :
int __stdcall MyDllfct(void* p, int len);
1 - La manière la plus simple ed l'utiliser, c'est de déclarer cette fct dans un .h, inclu à la fois par le prog et la dll mais l'un l'aura en export et l'autre en importe. Pour que le linker ne "tilte" pas tu fournis un .lib qui dir que la fct est dans une dll. Cette méthode oblige la dll à être chargée au démarrage du prog sinon erreur windows.
2 - tu peux également charger la dll et la fct au runtime :
// chargemment dll
HINSTANCE hinst = LoadLibrary(MyDll.dll);
// typedef sur la fonction.
typedef int (__stdcall *PFN_MYDLLFCT)(void* int);
// chargement de la fct :
PFN_MYDLLFCT pfnMyDllFct = (PFN_MYDLLFCT)GetProcAddress(hinst, "MyDllfct");
// utilisation de la fct :
int result = pfnMyDllFct(NULL, 0);
En faisant comme cela, tu peux tester la présence de la dll et de la fonction et agir en conséquence.