La compilation et l'édition de liens ne pose aucun problème.
Sous VB, je déclare cette DLL comme suit :
Private Declare function fnCIAM_CCA Lib "CIAM_CCA" () as long
Private sub Test msgbox fnCIAM_CCA End sub
et j'obtient le message suivant :
Point d'entrée fnCIAM_CCA d'une DLL introuvable dans C:.....CIAM_CCA.dll
Pouvez-vous m'aider ?
Hello,
oui on peut t'aider :-))
Tu as presque tout bon, sauf pour la déclaration en VB, qui doit être comme ceci:
Private Declare Function fnCiam_CCA Lib "C:JMDvpmtVCCIAM_CCADebugCIAM_CCA.dll" Alias "?fnCIAM_CCA@@YAHXZ" () As Integer
Et hop, ca marche du premier coup.
Comment se fait-ce ? Très simple: le nom d'export de la fonction de la DLL n'est pas le nom tel qu'il est écrit dans ton .cpp, mais un nom calculé par le compilateur.
Tu obtiens ces noms en cochant l'option Generate Map File dans les settings du compilateur. Tu regardes ensuite le fichier .map généré dans lequel tu trouveras ceci:
??4CCIAM_CCA@@@@Z 10001030 f i CIAM_CCA.obj 10001070 f CIAM_CCA.obj ?fnCIAM_CCA@@YAHXZ 100010b0 f CIAM_CCA.obj 100010e0 f LIBCMTD:dllcrt0.obj
Bref, tout ceci est expliqué dans un petit tutorial de mon cru, que tu retrouveras ici: http://users.skynet.be/candide/tuto/cetvb.htm
Petit conseil: quand tu créés ton projet, ne demande pas "A simple dll that export some symbols" mais simplement "an empty dll", c'est plus facile de gérer après.
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;
"jean saint jalmes" <jeansaintjalmes@discussions.microsoft.com> a écrit dans
le message de news:05DFC68F-2666-46B8-A299-FC644E8BCE73@microsoft.com...
Bonjour,
Je veux écrire une DLL en C++ utilisable en VB.
Le fichier CIAM_CCA.cpp contient :
// CIAM_CCA.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
#include "CIAM_CCA.h"
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID
lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
La compilation et l'édition de liens ne pose aucun problème.
Sous VB, je déclare cette DLL comme suit :
Private Declare function fnCIAM_CCA Lib "CIAM_CCA" () as long
Private sub Test
msgbox fnCIAM_CCA
End sub
et j'obtient le message suivant :
Point d'entrée fnCIAM_CCA d'une DLL introuvable dans C:.....CIAM_CCA.dll
Pouvez-vous m'aider ?
Hello,
oui on peut t'aider :-))
Tu as presque tout bon, sauf pour la déclaration en VB,
qui doit être comme ceci:
Private Declare Function fnCiam_CCA Lib
"C:JMDvpmtVCCIAM_CCADebugCIAM_CCA.dll" Alias "?fnCIAM_CCA@@YAHXZ" ()
As Integer
Et hop, ca marche du premier coup.
Comment se fait-ce ? Très simple:
le nom d'export de la fonction de la DLL n'est pas le
nom tel qu'il est écrit dans ton .cpp, mais un nom
calculé par le compilateur.
Tu obtiens ces noms en cochant l'option Generate Map File
dans les settings du compilateur. Tu regardes ensuite le
fichier .map généré dans lequel tu trouveras ceci:
??4CCIAM_CCA@@QAEAAV0@ABV0@@Z 10001030 f i CIAM_CCA.obj
_DllMain@12 10001070 f CIAM_CCA.obj
?fnCIAM_CCA@@YAHXZ 100010b0 f CIAM_CCA.obj
__CRT_INIT@12 100010e0 f LIBCMTD:dllcrt0.obj
Bref, tout ceci est expliqué dans un petit tutorial de mon
cru, que tu retrouveras ici:
http://users.skynet.be/candide/tuto/cetvb.htm
Petit conseil: quand tu créés ton projet, ne demande pas
"A simple dll that export some symbols" mais simplement
"an empty dll", c'est plus facile de gérer après.
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
La compilation et l'édition de liens ne pose aucun problème.
Sous VB, je déclare cette DLL comme suit :
Private Declare function fnCIAM_CCA Lib "CIAM_CCA" () as long
Private sub Test msgbox fnCIAM_CCA End sub
et j'obtient le message suivant :
Point d'entrée fnCIAM_CCA d'une DLL introuvable dans C:.....CIAM_CCA.dll
Pouvez-vous m'aider ?
Hello,
oui on peut t'aider :-))
Tu as presque tout bon, sauf pour la déclaration en VB, qui doit être comme ceci:
Private Declare Function fnCiam_CCA Lib "C:JMDvpmtVCCIAM_CCADebugCIAM_CCA.dll" Alias "?fnCIAM_CCA@@YAHXZ" () As Integer
Et hop, ca marche du premier coup.
Comment se fait-ce ? Très simple: le nom d'export de la fonction de la DLL n'est pas le nom tel qu'il est écrit dans ton .cpp, mais un nom calculé par le compilateur.
Tu obtiens ces noms en cochant l'option Generate Map File dans les settings du compilateur. Tu regardes ensuite le fichier .map généré dans lequel tu trouveras ceci:
??4CCIAM_CCA@@@@Z 10001030 f i CIAM_CCA.obj 10001070 f CIAM_CCA.obj ?fnCIAM_CCA@@YAHXZ 100010b0 f CIAM_CCA.obj 100010e0 f LIBCMTD:dllcrt0.obj
Bref, tout ceci est expliqué dans un petit tutorial de mon cru, que tu retrouveras ici: http://users.skynet.be/candide/tuto/cetvb.htm
Petit conseil: quand tu créés ton projet, ne demande pas "A simple dll that export some symbols" mais simplement "an empty dll", c'est plus facile de gérer après.
-- Jean-marc Tester mon serveur (VB6) => http://myjmnhome.dyndns.org "There are only 10 kind of people those who understand binary and those who don't." mailto: remove '_no_spam_' ;