Questo è il lavoro del compilatore/linker, è fatta automaticamente fino a quando si
- includere il Lib nelle opzioni di linker
- forniscono la DLL in fase di esecuzione in modo che sia trovato dal exe
Il file .lib viene generato quando si compila la DLL o viene fornito con esso se non è il codice. In questo caso il codice è compilato con __declspec(dllexport)
.
Durante la compilazione del file exe, il compilatore vede che la funzione inclusa si trova nella DLL. In questo caso il codice è compilato con __declspec(dllimpport)
.
Il linker viene fornito con il file .lib e genera istruzioni appropriate nel file exe.
Queste istruzioni consentiranno a Exe di trovare la DLL e caricare la funzione esportata in fase di esecuzione. La DLL deve semplicemente essere accanto all'Exe (ci sono comunque altri posti possibili).
Il passaggio da __declspec(dllimpport)
a __declspec(dllexport)
viene eseguito da una macro, provided by Visual C++ when creating a DLL project.
Dai un'occhiata alla: http://stackoverflow.com/questions/538134/exporting-functions-from-a-dll-with-dllexport –
Non spetta al vostro programma. Spetta al sistema operativo trovare la DLL di cui hai bisogno. Puoi dargli un tempo molto difficile per farlo, ma non ha proprio senso farlo. Assicurati che la DLL sia presente nella stessa directory del tuo EXE e funzionerà bene. –