Depuis VBA, j'essaie d'utiliser une fonction d'une DLL que j'ai realise sous
VC++ mais j'obtiens l'erreur suivante :
> Run-time error '49' :
> Bad DLL calling convention
Qu'est ce que cela veut dire ?
Je pense que cela est un probleme de types lie aux parametres que je desire
transmettre a la fonction de la DL mais je ne vois pas lequel.
Sous VC ma fonction GenerateDataFromFile doit recevoir 3 chaines de
caracteres (char*) dont deux sont des chemins (absolus) de fichiers
int GenerateDataFromFile(char* output_filename, char* input_filename, char*
ID);
Voila la declaration sous VB:
> Option Explicit
>
> Private Declare Function GenerateDataFromFile Lib
"D:\PROJECTS\My_API\My_API.dll" _
> (ByVal strTargetOutputFile As String, ByVal strInputFileName As String,
ByVal strGeneratedStructName As String)
>
(Le compilo a retire tout seul la partie "Alias GenerateDataFromFile" ...)
voici l'appel a la fonction pour mes tests :
> GenerateDataFromFile "c:\\output.txt", "C:\\data.dat", "first_data"
(J'ai egalement essaye avec des '\' simples mais ca marche pas non plus)
Ou se situe l'erreur a priori ?
Thx in advance
Marc
PS : Le probleme c'est egalement que je sais pas debbugge une DLL sous VC
(et encore moins si elle est appellee depuis VBA !)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Zoury
Salut Marc! :O)
int GenerateDataFromFile(char* output_filename, char* input_filename,
char* ID);
ta fonction doit respecter le standard d'appel __stdcall pour être utilisable à partir de VB.
je ne suis pas un spécialiste du C/C++, mais ça devrait ressembler à ça.. : //*** int __stdcall GenerateDataFromFile(char* output_filename, char* input_filename, char* ID) //***
ou
//*** int __stdcall GenerateDataFromFile(LPSTR output_filename, LPSTR input_filename, LPSTR ID) //***
et ta declaration VB devrait ressembler à ceci :
Declare Function GenerateDataFromFile _ Lib "monchemin/madll.dll" _ ( _ ByVal sOutputFileName As String, _ ByVal sInputFileName as String, _ ByVal sID As String _ )
Merci de poster les réponses au groupe afin d'en faire profiter à tous
Salut Marc! :O)
int GenerateDataFromFile(char* output_filename, char* input_filename,
char* ID);
ta fonction doit respecter le standard d'appel __stdcall pour être
utilisable à partir de VB.
je ne suis pas un spécialiste du C/C++, mais ça devrait ressembler à ça.. :
//***
int __stdcall GenerateDataFromFile(char* output_filename, char*
input_filename, char* ID)
//***
ou
//***
int __stdcall GenerateDataFromFile(LPSTR output_filename, LPSTR
input_filename, LPSTR ID)
//***
et ta declaration VB devrait ressembler à ceci :
Declare Function GenerateDataFromFile _
Lib "monchemin/madll.dll" _
( _
ByVal sOutputFileName As String, _
ByVal sInputFileName as String, _
ByVal sID As String _
)
int GenerateDataFromFile(char* output_filename, char* input_filename,
char* ID);
ta fonction doit respecter le standard d'appel __stdcall pour être utilisable à partir de VB.
je ne suis pas un spécialiste du C/C++, mais ça devrait ressembler à ça.. : //*** int __stdcall GenerateDataFromFile(char* output_filename, char* input_filename, char* ID) //***
ou
//*** int __stdcall GenerateDataFromFile(LPSTR output_filename, LPSTR input_filename, LPSTR ID) //***
et ta declaration VB devrait ressembler à ceci :
Declare Function GenerateDataFromFile _ Lib "monchemin/madll.dll" _ ( _ ByVal sOutputFileName As String, _ ByVal sInputFileName as String, _ ByVal sID As String _ )