Rechercher : dans
Par :

Comment utiliser une DLL en assembleur C/C++

Dernière réponse le 15 sep 2003 à 00:56:51 radamenthys, le 5 sep 2003 à 13:19:41 
 Signaler ce message aux modérateurs

Je voudrais juste connaître les librairies et les fonctions C/C++ pour ouvrir une DLL et ainsi pouvoir récuperer les fonctions qui s'y trouvent et également comment puis je faire pour le faire directement en assembleur si j'en ai besoin. Et enfin je voudrais si c'est possible que cela fonctionne autant avec linux qu'avec windows au quel cas j'aimerai aussi savoir comment faire une application pouvant s'installer et fonctionner sur ces 2 OS sans à avoir à recompiler mais juste par installation.

Meilleures réponses pour « Comment utiliser une DLL en assembleur C/C++ » dans :
Générer des nombres aléatoires efficacement avec rand() VoirGénérer des nombres aléatoires efficacement avec rand() Vous avez peut-être remarqué qu'en C, en utilisant la fonction rand() de la bibliothèque standard, vous obtenez des résultats décevants, trop souvent les mêmes. Prenons un exemple, vous...
Les structures en langage C VoirDifférence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de...
Pile en assembleur VoirUtilité d'une pile Une pile est une zone de mémoire dans laquelle on peut stocker temporairement des registres. Il s'agit d'un moyen d'accéder à des données en les empilant, telle une pile de livres, puis en les dépilant pour les utiliser. Ainsi il...

1

Marc, le 9 sep 2003 à 02:12:53

Je vais pas pouvoir t'aider beaucoup, tout ce que je peux te dire
c'est que pour utiliser les DLL (je programme sous VisualC++ 6)
je fais quelque chose qui ressemble à ça:
(je te le fait de tête alors c'est pas garanti que ça compile.)

#include <windows.h>

int ( _stdcall * PointeurSurFonction ) (int,int);
HANDLE hLib=LoadLibrary("MaLibrairie.dll");
PointeurSurFonction=GetProcAddress("FonctionSomme");
int Resultat=PointeurSurFonction(2,3);
FreeLibrary(hLib);

Mais bon, si tu programme sur Linux, je pense pas que ça marche :)
(surtout le include windows.h)

Sans ces fonctions, cela me semble un peu complexe surtout que ces fonctions elles mêmes proviennent probablement d'une DLL du style kernel.dll ou je ne sais quoi (à voir...).

Mais bon, si tu as la chance d'y parvenir en assembleur, note bien
le _stdcall : il signifie que l'empilement des paramètres passés à la fonction n'est pas le même qu'en C (_cdecl) (ça doit être plus proche du Pascal) et c'est ainsi que les paramètres sont passés
dans les DLL Windows et autres probablement).

Pour ce qui est de faire tourner le programme sous Linux et Windows, je vois mal comment faire... ou alors tente le Java :)

Sur ces bonnes paroles (j'adore m'autocongratuler) je te souhaite de folles nuits de programmation.

A++

Répondre à Marc

2

Marc, le 9 sep 2003 à 02:30:22

Ah j'oubliais, si tu aimes l'anglais, cette adresse est plutôt intéressante:

http://www.msdn.microsoft.com/library/en-us/dllproc/base/dyn­amic_link_libraries.asp

Répondre à Marc

3

radamenthys, le 9 sep 2003 à 10:39:21

Merci pour tes explications, sa marche tres bien maintenant et sa m'a aidé pour linux je me débrouillerai, il doit bien y a voir une librairie quelque par. Je te remercie encore de ton aide.

Répondre à radamenthys

4

Marc, le 15 sep 2003 à 00:31:05

Cool

Répondre à Marc

5

 Bob, le 15 sep 2003 à 00:56:51

Library = Bibliothèque
Bookshop = Librairie
Pour clarifier les esprits ;-)

Répondre à Bob
Collection CommentÇaMarche.net