1

Bonjour
j écris sur ce forum dans l attente inestimable d'une aide de votre part!
Je dois, dans le cadre de mes etudes, ecrire un programme en c++ sur windows qui doit se servir d un fichier dll. J utilise borland pr editer et compiler, or il se trouve que je ne sais pas du tt comment inclure ce .dll à mon programme principal. J ai essayé un #include "fichier.dll" en laissant le .dll dans le meme repertoire que mon programme mais le compilateur m a affiché des messages d erreurs du style erreur character pr ce qui concerne le contenu du .dll; il se pourrait donc que le .dll soit ecrit ac des characters non conformes (??)...mais je n en suis pas du tt sur et qd bien meme ca serait le cas je ne vois pas ce qu il ft que je fasse...
J ai environ une semaine pr resoudre ce probleme dc si vous pouviez m aider ca serait assez fantastique.

merci d avance

PV

2

Pour acceder a une dll tu dois utiliser les api suivantes : LoadLibrary et GetProcAddress. Cela permet d'une part de charger la dll dynamiquement et d'utiliser un module de celle ci.
Autrement tu peux tjrs utiliser "la bonne vieille methode" qui consiste a mettre le fichier .lib de ta dll ds ton projet C++ et ensuite ton compilateur ira chercher ds le repertoire de compilation si ta dll est bien presente. Autrement il ira chercher dans ton repertoire systeme %systemroot% afin de trouver cette dll.
Voila voila.
++

3

que de b^etises lues!
c'est un peu n'importe quoi.

une recherche dans google en 5 minutes chrono avec "loadlibrary example c++"
donne http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_core_LoadLibrary_and_AfxLoadLibrary.asp
j'espère que tu comprends l'anglais

pascal > as tu déja regardé un fichier DLL dans notepad? ce n'est pas du tout un texte. c'est comme un fichier .exe

sw* > un lib est statique donc c'est exactement l'inverse d'une DLL (qui est dynamique)
le lib, tu l'as déja regardé? c'est pas une indication sur la DLL, c'est une collection de fichiers .o empaquetés, pour éviter un appel à dll justement.

4

il y a pas des dll qui ont une .lib associée, pour qu'on puisse les utiliser plus facilement ?
(genre que le chargement soit fait automatiquement)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

5

un .lib c'est un .a de linux, c'est lié statiquement, sous linux je sais que pour lier dynamiquement on doit faire -shared et statiquement on doit faire -static (bien sur il fait dynamique par défaut pour diminuer la taille des binaires) mais sous windows, j'en sais rien sorry

6

squalyl^2 > les .lib sont indispensables pour linker avec une dll. sinon il faut passer par loadlibrary, etc... effectivement les .lib peuvent aussi contenir du code statique. et ils peuvent même contenir une version statique du code d'une fonction qui est pourtant déja dans la dll associée du coup on ne sait plus trop avec quoi il linke, c'est joyeux cheeky
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

7

Mais de base, le .lib généré avec un .dll Win32 normal est supposé contenir uniquement ce qui est nécessaire pour utiliser la DLL.
Pour les dll livrées avec Windows, il me semble que c'est généralement le cas, une exception notable étant ws2_32.lib qui fait sa propre cuisine...
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

8