OVH Cloud OVH Cloud

Librairies et fichier .lib

12 réponses
Avatar
JM
Bonjour

Voila mon problème.
J'ai crée une librairie qui utilise Gdi+
Si je crée un exe, je n'ai pas de probleme en incluant pragma comment
(lib,"gdiplus.l");

Mais si je veux compiler en librairie, cela ne marche pas et ne
reconnait donc pas les fonctions gdi+

Voila, je suis un peu perdu.

Merci

2 réponses

1 2
Avatar
Arnaud Debaene
Manuel Leclerc wrote:
Arnaud Debaene a écrit :

- dans la liste des modules passés au librarian si tu
fais une lib statique.



Je ne comprend pas



Je n'ai pas VC6 sous la main, mais ca doit être le champ "additionnal
dependencies" des propriétés du librarian (Générateur de bibliothèque en
français).

Arnaud
Avatar
JM
Arnaud Debaene a écrit :
JM wrote:





Houlà, tu confonds plusieurs choses! :
- les erreurs du type CXXXX sont des erreurs du *compilateur*. Elles sont
les mêmes que tu compile un executable, une DLL, ou une lib statique
puisqu'on en est à la phase où tu produits des .obj, peu importe à quoi ils
vons servir ensuite. Les erruers du type LNKXXXX sont des erreurs de
*l'éditeur de liens* : elles ne peuvent survenir que su fais un executable
ou une DLL, pas si tu fais une librairie statique.



Ok.
C'est fou ce qu'on apprend en faisant des conneries :-)

- j'ai l'impression que tu ne fais pas la différence entre une DLL et une
lib statique. Si tu nous dis que tu n'as pas d'onglet "Link" dans les
propriétés de ton projet, j'en déduis que tu fais une librairie statique, et
pas une DLL.




Ben c'est ce que je crois avoir dit

En ce qui concerne tes erreurs, ce sont des erreurs de compilation, donc
elles n'ont *rien* à voir avec les librairies que tu lies à ton projet ou
pas (on n'en est pas encore à ce stade). Il te manque vraisemblablement un
#include d'un header. Ce qu'il te manque à priori, c'est la définition de la
macro DEFINE_GUID; ce qui veut dire que tu dois #inclure guidddef.h avant
d'inclure les headers de GDI+. Le plus probable, c'est que dans ton projet
qui marche (ton exe), tu ais un #include <windows.h> (qui inclus lui-même
indirectement guiddef.h) et que tu ne l'ais pas dans ton projet qui ne
marche pas.



En suivant le conseil de manuel, j'ai crée un projet vide et, après un
certain temps, j'ai effectivement constaté qu'il manquait <objbase.h>
Maintenant cela semble marcher.

Merci à tous!

Enfin, pour lier les librairies de GDI+, la solution recommandée n'est pas
de faire un #pragma comment mais d'ajouter gdiplus.lib :
- dans les "additionnal libraries" du linker si tu fais un exe ou une DLL
- dans la liste des modules passés au librarian si tu fais une lib statique.



C'est bon à savoir, merci.
1 2