Bonjour,
Je développe d'habitude en Delphi, mais je souhaite développer une DLL en C++ et donc je débute en ce langage. Pour tester le développement de DLL voici le code que j'ai utilisé :A l'utilisation de cette DLL sous Delphi j'obtiens l'erreur "Le point d'entrée de procédure Add est introuvable..."
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 //--------------------------------------------------------------------------- #include <vcl.h> #include <windows.h> #pragma hdrstop //--------------------------------------------------------------------------- // Remarque importante sur la gestion mémoire de la DLL quand votre DLL utilise la // version statique de la bibliothèque d'exécution (RTL) : // // Si votre DLL exporte des fonctions qui passent des objets chaîne (ou des classes structs/ // contenant des chaînes imbriquées) par le biais de paramètres ou de résultats de fonctions, // vous devrez ajouter la bibliothèque MEMMGR.LIB au projet DLL et aux autres // projets qui utilisent la DLL. Il sera aussi nécessaire d'utiliser MEMMGR.LIB // si d'autres projets utilisant la DLL effectuent des opérations new ou delete // sur des classes ne dérivant pas de TObject qui sont exportées depuis la // DLL. Ajouter MEMMGR.LIB à votre projet changera la DLL et son EXE appelant // afin d'utiliser BORLNDMM.DLL en tant que gestionnaire de mémoire. Dans ces cas, // le fichier BORLNDMM.DLL doit être déployé avec votre DLL. // // Pour éviter l'emploi de BORLNDMM.DLL, passez des informations chaîne par // le biais de paramètres "char *" ou ShortString. // // Si votre DLL utilise la version dynamique de la RTL, il n'est pas nécessaire // d'ajouter explicitement MEMMGR.LIB car cela sera fait implicitement //--------------------------------------------------------------------------- #pragma argsused extern __declspec( dllexport ) double Add (double a, double b); extern __declspec( dllexport ) double Subtract(double a, double b); int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) { return 1; } double Add (double a, double b) { return a+b; } double Subtract(double a, double b) { return a-b; } //---------------------------------------------------------------------------
Qu'ai-je oublié ?
Partager