Télécharger le zip
J'arrive a utiliser "math.dll" dans un exécutable VB, C# mais pas en C. Si quelqu'un a une idée, je vous écoute ;-)
tu doit créer un fichier .lib et l'importe en C++ (imports "math.lib"). Je ne suis pas sur que ca fonctionne avec la dll. et puis il te faut mettre le prototype de la fonction avec un extern devant.Je ne suis pas trop sur de ce que j'avance si quelqu'un peux confirmer..sinon google est ton ami ;-)
tu a raison, c'est la le problème !!!ALINK ne génère pas ce fichier "LIB" en meme tant qu'il génère ma "DLL". Je pense qu'il faut passer par d'autres techniques pour l'obtenir mais je ne sais lequels !!!???"DLLTOOL.EXE" peut etre? comment l'utiliser? trop compliqué ;-)
Il faudrait essayer un import directement sur la dll mais ca m'etonnerait. Sinon via les API LoadLibrary et GetProcAdressDLLTOOL ? connais pas :-(
Enfin j'ai trouvé une bonne doc sur "DLLTOOL", il ma généré mon fichier manquant "math.lib".Ca marche, et j'ai ajouté un exemple d'utilisation en CPP.super ;-)
Je débute en assembleur (je commence tout juste les programmes W32 exe). Je souhaitais connaitre la façon de créer des dll avec les outils dont je dispose (Nasm et alink)car je ne connais pas le C et ses variantes. La source d'IBROMAN possède les qualités suivantes (pour moi) :- être écrite dans un langage que je comprend (sans macro qui complique la compréhension)- les fonctions sont simples et le code est court- les instructions sont commentées- figurent également les instructions de compilation.Je souhaitais savoir comment effectuer le passage de paramètres entre un programme de haut niveau (VB) et l'assembleur. C'est chose faiteEn résumé c'est la source qu'il me fallait
Bonjour IBROMAN.J'ai décortiqué les sources en asm et la dll pour comprendre comment ça marche. J'ai bien retrouvé les morceaux de programmes (assemblage des différents modules). Peux-tu cependant m'expliquer le rôle du point d'entrée dans la dll et de cette partie du code..start:dllstart: mov eax,1 ;pourquoi mettre 1 dans eax ? ret 12 ;pourquoi dépiler 12 octets ?Merci d'éclairer ma lanterne
MOV eax, 1 veux dire qu'on retourne la valeur 1 (Et donc tu recuperera cette valeur au moment de l'import de la dll en C ou en VB par exemple) qui signifie qu'il n'y a pas eu d'erreur.On dépile 12 octet simplement parce que le système fournit 3 arguments à une fonction dllmain. En C voilà le prototype d'une fonction dllmain.BOOL APIENTRY DllMain ( HINSTANCE hinst, DWORD raison, LPVOID reserv )Je pense que tu devrais t'interressé au C avant de passé à de l'assembleur sous win32. l'assembleur n'est qu'un langage, win32 est une plateforme. C'est déjà pas simple de comprendre les mécanisme à la base de la plateforme... si tu dois comprendre en meme temps les "protocoles" de ces mécanisme tu va avoir du mal à t'en sortir. j'entend par protocole les différents passage de paramètres possible, le fait de retourner les valeur dans eax, les registre qui sont modifié lors d'appel de fonction, la signification des valeur de retour,...
Bonjour SIBI12,Si je me suis interessé aux dll c'est pour pouvoir les appeler à partir de projets VBA ou à partir de programmes Win32 que je souhaite créer dans le futur. J'ai bien vu que le langage asm n'est peut-être pas le plus adapté pour cet usage mais je ne souhaite pas (pour l'instant) me lancer dans l'apprentissage du langage C.Je suppose que les 3 arguments en question sont passés lors du chargement de la dll (non visibles dans le projet VBA).Je suppose que ces paramètres doivent être indiqués en clair lors de l'appel de la dll par un programme W32. Si tu as des exemples d'appels de dll par un programme assembleur - et sans doute de libération de la dll, je suis preneur.Merci
Les 3 arguments sont fourni pas l'OS effectivement. ça se passe au moment ou la dll est chargé en mémoire.Regarde dans mes sources, il doit y avoir un code pour recuperer le cpuid du processeur. C'est pile ce que tu cherche. Mais ce n'est pas un ActiveX donc je ne sais pas si on peux l'utiliser en VBA. il faut essayer
Bonjour,J'ai utilisé la dll math.dll du Zip d'IBROMAN en l'appelant à partir d'un programme en visual basic et tout se passe bien. Je souhaiterais pouvoir l'appeler à partir d'un programme Win32 écrit en asm (j'utilise Nasm et Alink). Je n'arrive cependant pas à le faire. Comment appelle-t-on un dll à partir d'un programme asm. J'ai essayé la fonction LoadLibraryA du kernel32 mais il me retourne une valeur nulle. J'ai cependant indiqué le chemin complet où j'ai placé la dll recherchée.Est-ce la façon de procéder ou suis-je à côté de la plaque ?Quelqu'un aurait-il un exemple d'appel de dll dans ce contexte ?PS SIBI12 m'a parlé des 3 arguments d'appel de dllmais je ne sais pas s'ils interviennent à ce niveau.
Il faut utiliser math.lib. Apparemment Ibroman a reussi a le generer grace à dlltool. Ensuite ça doit être un import "math.lib"Loadlibrary ça marche aussi mais c'est plus lourd.quoique je viens de jeter un oeil ds les samples pour declarer ils utilisentEXTERN MessageBoxAIMPORT MessageBoxA user32.dllEssaie et dit moi quoi. pour les 3 arguments tu ne doit pas t'en soucier l'os s'occupent de tout.
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 902 592 membres 19 nouveaux aujourd'hui 16 193 membres club