Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

A quoi correspond cette erreur ?

1 réponse
Avatar
Marc
Bonjour,

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 !)

1 réponse

Avatar
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 _
)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous