La Web del Programador: Comunidad de Programadores
 
    Pregunta:  37922 - USO DE DLL DE UN C++
Autor:  Jon Garcia
Querría usar una dll en un porgrama de C++, pero me da el siguiente error:

En el fichero .cpp tengo la suguiente función que llama a funciones de la dll:

void CloseWaveOut(void){
rc = waveOutReset(hWaveOut);
rc = waveOutUnprepareHeader(hWaveOut, outHdr, sizeof(outHdr));
rc = waveOutClose(hWaveOut);
}

y en el .h he declarado las funciones de la dll que necesito:

extern long waveOutUnPrepareHeader (long,WAVEHDR,long);
extern long waveOutReset (long);
extern long waveOutClose (long);

y me da el siguiente error:

proy.obj : error LNK2001: unresolved external symbol \"long __cdecl waveOutClose(long)\" (?waveOutClose@@YAJJ@Z)
proy.obj : error LNK2001: unresolved external symbol \"long __cdecl waveOutUnprepareHeader(long,struct WAVEHDR,long)\" (?waveOutUnprepareHeader@@YAJJUWAVEHDR@@J@Z)
proy.obj : error LNK2001: unresolved external symbol \"long __cdecl waveOutReset(long)\" (?waveOutReset@@YAJJ@Z)

Gracias de antemano

  Respuesta:  Daniel Azkona Coya
Para poder hacer la declaración de las funciones tal como tu lo haces necesitas el fichero .LIB de la DLL. Ya que estas intentando una cargar estática.
La otra posibilidad es hacer carga dinámica de la DLL:
Tienes que usar el GetModuleHandle() para obtener un handle a la DLL y luego coger el puntero a cada funcion