1

je compile mon prog (un compresseur Bz2 qui utilise libbz2.dll) et ça me fait des erreurs de 'linkage' pour des finctions dans la librairie.

Ce probleme existe uniquement lorsque je compile le programme pour windows car j'ai fait une version DOS qui marche sans problemes ... confus

2

il faut pas que tu linke via une .lib qui appelle la Dll ?

(du moins, j'ai l'impression que c comme ça que marche Allegro qd on veut faire une version en linkage dynamique)
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

3

mais quel .lib ??? parceque j'ai ma dll mais c'est tout ...

4

Tu peux charger ta librairie pendant l'exécution, avec LoadLibray, GetProcAddress et FreeLibrary.
Mais la meilleure solution est créer le .lib : créer un DLL bidon. Je l'ai déjà fait plusieurs fois, mais c'est assez lnog à expliquer.

5

nEUrOne> ma fois, le .lib, c une excellente question smile
cela dit, je sais que pr Allegro, du moins (ça doit être la seule lib que j'utilise en Dll de par tmoi-même, à part les libs par défaut), même qd je veut faire du linkage dynamique, j'utilise une .lib
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

6

JM> j'utilise la méthode de GetProcAdress etc. pour l'instant ... roll

faudrait donc que je crée une lib .lib fictive avec les renvoies GetProcAdress etc. ?

7

avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

8

faudrait donc que je crée une lib .lib fictive avec les renvoies GetProcAdress etc. ?
Non, il n'y a plus de GetProcAdress ou autre si tu recrée ton .lib.
Ce que donne Kevin Kofler a l'air de marcher.
Ma méthode consistait à écrire un libbz2.dll bidon, qui a l'apparence du vrai libbz2.dll depuis un programme externe.
Je l'ai fait pour pouvoir utiliser la compression/décompression cab dynamiquement, via cabinet.dll plutôt que les librairies statiques fci.lib et fdi.lib. VC6 ne proposait pas du tout la compression cab et le cab-sdk ne fournissaient que fci.h, fci.lib, fdi.h et fdi.lib. Pour créer cabinet.lib, j'ai fait ça :
- créer un projet DLL du nom de "cabinet"
- créer cabinet.c avec :
#include <windows.h>
#include <fci.h>
#include <fdi.h>
- créer cabinet.def avec :
LIBRARY CABINET
EXPORTS
FCIAddFile
FCICreate
FCIDestroy
FCIFlushCabinet
FCIFlushFolder
FDICopy
FDICreate
FDIDestroy
FDIIsCabinet

Ce n'est pas un très bon exemple, parce qu'il me semble que pour créer le dll, j'ai inclus les librairies statiques, ce qui revenait à réécrire le vrai cabinet.dll, mais j'y suis déjà arrivé pour un autre dll donc je ne me rappelle plus le nom.

9

Pour l'autre dll, j'avais peut être fait des fonctions vides.
Il faut aussi faire attention à la décoration des noms des fonctions que tu veux utiliser.
Et le .def n'est pas toujours nécessaire.

10

Merci JM, Kevin et Squale92.

top

11

j'ai pas fait gd chose, mais de ren smile
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