liaison dll

liaison dll - C - Programmation

Marsh Posté le 19-09-2008 à 14:33:33    

Salut,
j'ai fait un petit programme en C qui utilise une librairie externe (libpq de postgresql). L'edition des liens se fait bien (gcc -LC:\MinGW\lib -LC:\Program Files\PostgreSQL\8.3\bin -oservice_C.exe main.o -lws2_32 -lpq)
 
Pourtant, à l'execution, le binaire ne trouve pas les dll. Comment cela se fait ? Il ne fonctionne que si les dll sont dans son propre dossier :'(

Reply

Marsh Posté le 19-09-2008 à 14:33:33   

Reply

Marsh Posté le 19-09-2008 à 14:38:56    

Il existe deux types de bibliothèques qu'il ne faut pas confondre. Celles qui sont liées au moment du link-edit, juste après la compilation (par abus de langage, on dit parfois qu'elles sont liées à la compilation). La bibliothèque libpq en fait partie. Et il y a celles qui sont liées au moment de l'exécution (late binding). Les DLL font partie de cette dernière catégorie. Je ne connais pas les DLL de Postgres, mais habituellement, les DLL sont à mettre dans un endroit précis, soit dans le répertoire Windows, soit dans un répertoire du chemin (variable PATH), soit enfin dans un répertoire dépendant d'un paramètre de configuration ou d'une variable d'environnement particulière.


Message édité par olivthill le 19-09-2008 à 14:41:47
Reply

Marsh Posté le 19-09-2008 à 14:40:08    

Ok, mais ces dll il va bien falloir que je définisse leur chemin ? Si il faut que je copie les dll dans le dossier de l'executable, j'ai du mal à voir leur intérêt !

Reply

Marsh Posté le 19-09-2008 à 16:47:18    

J'ai tenté d'ajouter le dossier contenant les dll de postgre dans le PATH de Windows mais c'est pareil, il n'y a qu'en copiant les dlls dans le dossier que ça passe

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed