begin process at 2012 05 24 02:41:53
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

dlls

 > DLL AVEC NASM ET ALINK

DLL AVEC NASM ET ALINK


 Information sur la source

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :dlls Niveau :Initié Date de création :07/05/2005 Date de mise à jour :09/05/2005 11:29:26 Vu / téléchargé :4 669 / 311

Auteur : ibroman

Ecrire un message privé
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

Utilisation de NASM et ALINK pour générer des DLL.
Exemple d'utilisation en Visual Basic et DEVCPP dans la source.



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

09 mai 2005 11:29:26 :
Problème de la LIB résolut !!!

 Sources du même auteur

Source avec Zip PROGRAMMATION MODULAIRE ET INTERRUPTION PERSONNALISÉE
Source avec Zip AFFICHER L'HEURE DU BIOS

 Sources de la même categorie

Source avec Zip Source avec une capture DLL ALGORYTHME DE RECHERCHE DE CHEMIN EN A STAR, A*, FASM par Devnix
Source avec Zip DLL EFFECTUANT UNE TRANSFORMÉE DE FOURIER RAPIDE par Nasman
Source avec Zip DLL MASM32 ET DARKBASIC PRO par Apinew
Source avec Zip OBTENIR LE CPUID DE SON PROCESSEUR (DLL) par sibi12
Source avec Zip DLL-FONCTIONS 3D par quoi

Commentaires et avis

Commentaire de ibroman le 07/05/2005 15:52:11

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

Commentaire de sibi12 le 08/05/2005 17:19:51

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

Commentaire de ibroman le 08/05/2005 17:32:18

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é ;-)

Commentaire de sibi12 le 08/05/2005 17:51:46

Il faudrait essayer un import directement sur la dll mais ca m'etonnerait. Sinon via les API LoadLibrary et GetProcAdress

DLLTOOL ? connais pas :-(

Commentaire de ibroman le 08/05/2005 23:21:11

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

Commentaire de Nasman le 18/05/2005 16:07:20

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 faite
En résumé c'est la source qu'il me fallait

Commentaire de Nasman le 20/05/2005 09:15:24

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

Commentaire de sibi12 le 20/05/2005 14:59:24

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,...

Commentaire de Nasman le 25/05/2005 16:48:26

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

Commentaire de sibi12 le 25/05/2005 16:57:49

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

Commentaire de Nasman le 02/06/2005 15:35:42

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 dll
mais je ne sais pas s'ils interviennent à ce niveau.

Commentaire de sibi12 le 02/06/2005 16:03:21

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 utilisent
EXTERN MessageBoxA
IMPORT MessageBoxA user32.dll

Essaie et dit moi quoi. pour les 3 arguments tu ne doit pas t'en soucier l'os s'occupent de tout.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,045 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales