J'essaie de créer une DLL qui sera utilisée ultérieurement dans Inno Setup. j'ai réussi à créer une DLL à l'aide Pellès comme un IDE, avec le code suivant:Problème de création/appel d'une DLL
#include <windows.h>
__declspec(dllexport) int sumT(){
return 2;
}
J'appelle la carte de la DLL à une fonction dans Inno Setup, en utilisant le code Delphi suivant:
function Hellow() : Integer ;
external '[email protected]:yyy.dll stdcall';
Cela fonctionne comme prévu, renvoyant 2. Je peux également l'appeler de rundll32.exe - si j'ajoute un MsgBox dans la DLL, il apparaîtra, prouvant que tout fonctionne comme prévu.
Maintenant, le problème commence lorsque je tente de transmettre une valeur à la DLL, comme ça - par exemple:
#include <windows.h>
__declspec(dllexport) int sumT(int sumTah){
return sumTah;
}
Il cesse de fonctionner! Dans Inno Setup, je me donne le message:
"Erreur d'exécution (à -1: 0)"
Et si j'essaie rundll32.exe, je reçois:
erreur dans yyy.dll
d'entrée manquant: SUMT
Je ne vais pas coller le code Delphi ici, parce que j'ai pratiquement tout essayé, même chose avec le code C, j'ai essayé d'utiliser __stdcall à la place, déclarant l'argument comme INT, UINT ... et d'autres choses que j'ai oubliées.
J'ai également recherché le MSDN, mais n'a pas pu trouver quelque chose se rapportant à ce problème particulier.
Alors, quelqu'un peut-il vous aider?
Merci
EDIT: Je suis en C compilerai, donc pas besoin de "extern".
Merci pour l'astuce sur l'utilisation de dumpbin.exe Il s'avère que la fonction est exportée en tant que "_sumT @ 4" J'ai trouvé une option dans le compilateur qui dit "Undecorate exporté stdcall functions" (Dans les options de projet -> Compilateur). Ça devrait le faire. BTW __stdcall ne semble pas fonctionner. – Rolf