au sortir de ces deux opérations je n ai aucun warning et j obtiens un fichier factorial.dll
ensuite je fais un code c que j ai également déterré d un forum:
#include <windows.h>
typedef int __stdcall factorial_(WORD);
//extern int factorial(int n);
int _factorial(WORD n)
{
factorial_ *pfactorial = (factorial_ *)GetProcAddress(GetModuleHandle("factorial.dll"), "factorial");
return pfactorial ? pfactorial(n) : 0;
}
int main()
{
int n;
n=_factorial(9);
printf("%d" , n);
return 0;
}
je mets la dll dans le dossier projet/bin/debug (et en fait dans a peu pret tous les dossier du projet y compris le dossier racine tant j étais dépité) et dans l onglet projet/build options/linker settings coté librairie j ajoute la dll.
ca compile.
mais ca retourne 0 c est a dire qu il ne trouve pas la fonction et que le pointeur de la fonction est nul.
qu est ce que j ai mal fait? j ai l impression que je m y prends mal pour la inserer la dll mais j ai pu fauter a tant d endroit qu apres une aprem d essais infructuex je viens vous demander de l aide.
pour precision le tuto se faisait sous visual studio et necessitait l emploi d un prompt interne a vc.
Aussi , pour tester si la fonction factorial marchait il compilait un exe en ajoutant un main ou il appel sa fonction avec une valeur qu il glisse dans rcx.
Ca marchait , avec l exe.
par avance merci. ps le stdcall semble vouée au 32 bit du coup je l ai enlevé sans que rien ne soit changé.
- Edité par GouyFred 21 février 2021 à 10:22:43
nasm : creer une dll et l utiliser en c.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.