Il existe de nombreuses façons de procéder, mais je pense que l'une des options les plus simples consiste à lier l'application à la DLL au moment de la liaison, puis d'utiliser un fichier fichier de définition pour définir les symboles à exporter de la DLL.
CAVEAT : L'approche du fichier de définition fonctionne le mieux pour non décoré les noms des symboles. Si vous souhaitez exporter des symboles décorés, il est probablement préférable de NE PAS UTILISER l'approche du fichier de définition.
Voici un exemple simple de la manière de procéder.
Étape 1 : Définir la fonction dans le export.h fichier.
int WINAPI IsolatedFunction(const char *title, const char *test);
Étape 2 : Définir la fonction dans le export.cpp fichier.
#include <windows.h>
int WINAPI IsolatedFunction(const char *title, const char *test)
{
MessageBox(0, title, test, MB_OK);
return 1;
}
Étape 3 : Définir la fonction en tant qu'exportation dans le export.def fichier de définition.
EXPORTS IsolatedFunction @1
Étape 4 : Créez un projet DLL et ajoutez le fichier export.cpp y export.def à ce projet. La construction de ce projet créera un fichier export.dll et un export.lib fichier.
Les deux étapes suivantes établissent un lien avec la DLL au moment de la liaison. Si vous ne souhaitez pas définir les points d'entrée au moment de la liaison, ignorez les deux étapes suivantes et utilisez la commande Chargement de la bibliothèque y GetProcAddress pour charger le point d'entrée de la fonction au moment de l'exécution.
Étape 5 : Créer un Test pour utiliser la dll en ajoutant l'élément export.lib au projet. Copiez le fichier export.dll au même endroit que le fichier Test exécutable de la console.
Étape 6 : Appeler le Fonction isolée à partir de l'application Test, comme indiqué ci-dessous.
#include "stdafx.h"
// get the function prototype of the imported function
#include "../export/export.h"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// call the imported function found in the dll
int result = IsolatedFunction("hello", "world");
return 0;
}