Bonjour � tous,

SVP Veuillez m'aider � r�soudre le probl�me suivant :

En faite j'ai cr�er une DLL pour pouvoir l'utiliser en PowerBuilder, la DLL fonctionne parfaitement, le lien entre powerBuilder et cette DLL se fait correctement (Passage des param�tres,...) , jusqu'a ce point tout est OK.
Le seul probl�me qui se pr�sente est dans le nom des fonctions pr�sentes dans cette DLL; En effet pour pouvoir ex�cuter La fonction Test(...) � partir de PowerBuilder il faut d�clarer la fonction externe suivante :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
FUNCTION int Test(string utilisateur, string atome, long operation, long evenement, long reglement,ref string null_flags, ref string string_value, ref string date_value, ref long long_value, ref int boolean_value, ref double double_value) LIBRARY "MaDLL.dll" ALIAS FOR "_Z15TestPKcS0_lllPcS1_S1_RlRsRd@44"
Le probl�me comme vous remarquez est dans l'alias (obtenu � partir du fichier libMaDLL.dll.def, g�n�r� automatiquement,par le compilateur, en m�me temps que la MaDLL.dll)
est ce qu'il y a possibilit� pour faire changer cet alias par "Test" uniquement au lieu de "_Z15TestPKcS0_lllPcS1_S1_RlRsRd@44".

mon code est le suivant :

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
 
//main.h
#include <windows.h>
#define DLL_EXPORT __declspec(dllexport) __stdcall
extern "C"
{
 
    int DLL_EXPORT Test(
                                    const   char     FAR  *   utilisateur,
                                    const   char     FAR  *   atome,
                                    const   PBLONG              operation,
                                    const   PBLONG              evenement,
                                    const   PBLONG              reglement,
                                    char    FAR   *   null_flags,
                                    char    FAR   *   string_value,
                                    char    FAR   *   date_value,
                                    PBLONG         & long_value,
                                    PBBOOL         & boolean_value,
                                    PBDOUBLE       & double_value
                                  );
}

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
 
//main.cpp
#include "main.h"
// a sample exported function
int DLL_EXPORT Test(
                                const   char     FAR  *   utilisateur,
                                const   char     FAR  *   atome,
                                const   PBLONG              operation,
                                const   PBLONG              evenement,
                                const   PBLONG              reglement,
                                char    FAR   *   null_flags,
                                char    FAR   *   string_value,
                                char    FAR   *   date_value,
                                PBLONG         & long_value,
                                PBBOOL         & boolean_value,
                                PBDOUBLE       & double_value
                              )
{
   int retour=0;
   // Mon traitement 
   return retour;
}
 
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
    switch (fdwReason)
    {
        case DLL_PROCESS_ATTACH:
        break;
        case DLL_PROCESS_DETACH:
        break;
        case DLL_THREAD_ATTACH:
        break;
        case DLL_THREAD_DETACH:
        break;
    }
    return TRUE; // succesful
}
Merci d'avance