Tu veux que le même code (ta librairie) soit compilable soit en exécutable soit en DLL ? Si c'est le cas, une DLL n'est pas tout à fait la même chose qu'un exécutable quand même...
Précise un peu plus merci.
-- AMcD®
http://arnold.mcdonald.free.fr/
Désolé, je ne comprends pas bien ta question.
Tu veux que le même code (ta librairie) soit compilable soit en exécutable
soit en DLL ? Si c'est le cas, une DLL n'est pas tout à fait la même chose
qu'un exécutable quand même...
Tu veux que le même code (ta librairie) soit compilable soit en exécutable soit en DLL ? Si c'est le cas, une DLL n'est pas tout à fait la même chose qu'un exécutable quand même...
Précise un peu plus merci.
-- AMcD®
http://arnold.mcdonald.free.fr/
Arnaud Debaene
JM wrote:
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+
Qu'est ce que tu appelles "librairie" : une DLL ou une librairie statique (.lib) ? Et quu'entends-tu par "ne reconnait plus les fonctions GDI+? C'est une ereur au moement du link je suppose? Mais du link de ta librairie ou de l'executable final?
Arnaud
JM wrote:
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+
Qu'est ce que tu appelles "librairie" : une DLL ou une librairie statique
(.lib) ?
Et quu'entends-tu par "ne reconnait plus les fonctions GDI+? C'est une ereur
au moement du link je suppose? Mais du link de ta librairie ou de
l'executable final?
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+
Qu'est ce que tu appelles "librairie" : une DLL ou une librairie statique (.lib) ? Et quu'entends-tu par "ne reconnait plus les fonctions GDI+? C'est une ereur au moement du link je suppose? Mais du link de ta librairie ou de l'executable final?
Arnaud
JM
Lorsque je compile un exécutable qui contient du code gdi+, je n'ai pas de problème en utilisant #pragma comment (lin,"gdiplus.lib")
Mais actuellement je crée une librairie statique qui contient du code gdi+. Quand je lance la compilation, j'ai des tonnes de messages d'erreurs car le compilateur ne reconnait pas les instructions gdi+ Je ne trouve pas l'équivalent de #pragma comment (lin,"gdiplus.lib") pour les librairies.
En espérant avoir été plus clair.
Arnaud Debaene a écrit :
JM wrote:
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+
Qu'est ce que tu appelles "librairie" : une DLL ou une librairie statique (.lib) ? Et quu'entends-tu par "ne reconnait plus les fonctions GDI+? C'est une ereur au moement du link je suppose? Mais du link de ta librairie ou de l'executable final?
Arnaud
Lorsque je compile un exécutable qui contient du code gdi+, je n'ai pas
de problème en utilisant #pragma comment (lin,"gdiplus.lib")
Mais actuellement je crée une librairie statique qui contient du code gdi+.
Quand je lance la compilation, j'ai des tonnes de messages d'erreurs car
le compilateur ne reconnait pas les instructions gdi+
Je ne trouve pas l'équivalent de #pragma comment (lin,"gdiplus.lib")
pour les librairies.
En espérant avoir été plus clair.
Arnaud Debaene a écrit :
JM wrote:
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+
Qu'est ce que tu appelles "librairie" : une DLL ou une librairie statique
(.lib) ?
Et quu'entends-tu par "ne reconnait plus les fonctions GDI+? C'est une ereur
au moement du link je suppose? Mais du link de ta librairie ou de
l'executable final?
Lorsque je compile un exécutable qui contient du code gdi+, je n'ai pas de problème en utilisant #pragma comment (lin,"gdiplus.lib")
Mais actuellement je crée une librairie statique qui contient du code gdi+. Quand je lance la compilation, j'ai des tonnes de messages d'erreurs car le compilateur ne reconnait pas les instructions gdi+ Je ne trouve pas l'équivalent de #pragma comment (lin,"gdiplus.lib") pour les librairies.
En espérant avoir été plus clair.
Arnaud Debaene a écrit :
JM wrote:
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+
Qu'est ce que tu appelles "librairie" : une DLL ou une librairie statique (.lib) ? Et quu'entends-tu par "ne reconnait plus les fonctions GDI+? C'est une ereur au moement du link je suppose? Mais du link de ta librairie ou de l'executable final?
Arnaud
Manuel Leclerc
JM a écrit :
Lorsque je compile un exécutable qui contient du code gdi+, je n'ai pas de problème en utilisant #pragma comment(lin,"gdiplus.lib")
Mais actuellement je crée une librairie statique qui contient du code gdi+. Quand je lance la compilation, j'ai des tonnes de messages d'erreurs car le compilateur ne reconnait pas les instructions gdi+ Je ne trouve pas l'équivalent de #pragma comment (lin,"gdiplus.lib") pour les librairies.
En espérant avoir été plus clair.
1) je connaissais #pragma comment (lib,"gdiplus.lib") ^ mais pas #pragma comment (lin,"gdiplus.lib") ^ 2) le compilateur se moque des *.lib, c'est plutôt les *.h qui l'intéresse. Tu n'as pas plutôt des erreurs du linker ?
3) tu n'est pas obligé de passer par un #pragma. Tu peux spécifier la librairie dans l'onglet "Link" des settings (champ "Object/library modules")
En espérant t'avoir aidé.
-- Il faut attendre encore un peu, le temps que les gros genre Microsoft, Google et autres Yahoo se prennent par la main et imposent une solution au bordel mis en place par les unixiens et leurs RFC à la con. - ML in Guide du linuxien pervers - Tiens toi au pinceau, je retire l'echelle
JM a écrit :
Lorsque je compile un exécutable qui contient du code gdi+,
je n'ai pas de problème en utilisant
#pragma comment(lin,"gdiplus.lib")
Mais actuellement je crée une librairie statique qui contient
du code gdi+. Quand je lance la compilation, j'ai des tonnes
de messages d'erreurs car le compilateur ne reconnait pas
les instructions gdi+ Je ne trouve pas l'équivalent de
#pragma comment (lin,"gdiplus.lib")
pour les librairies.
En espérant avoir été plus clair.
1) je connaissais
#pragma comment (lib,"gdiplus.lib")
^
mais pas
#pragma comment (lin,"gdiplus.lib")
^
2) le compilateur se moque des *.lib, c'est plutôt
les *.h qui l'intéresse. Tu n'as pas plutôt des
erreurs du linker ?
3) tu n'est pas obligé de passer par un #pragma. Tu
peux spécifier la librairie dans l'onglet "Link"
des settings (champ "Object/library modules")
En espérant t'avoir aidé.
--
Il faut attendre encore un peu, le temps que les gros genre Microsoft, Google
et autres Yahoo se prennent par la main et imposent une solution au bordel mis
en place par les unixiens et leurs RFC à la con.
- ML in Guide du linuxien pervers - Tiens toi au pinceau, je retire l'echelle
Lorsque je compile un exécutable qui contient du code gdi+, je n'ai pas de problème en utilisant #pragma comment(lin,"gdiplus.lib")
Mais actuellement je crée une librairie statique qui contient du code gdi+. Quand je lance la compilation, j'ai des tonnes de messages d'erreurs car le compilateur ne reconnait pas les instructions gdi+ Je ne trouve pas l'équivalent de #pragma comment (lin,"gdiplus.lib") pour les librairies.
En espérant avoir été plus clair.
1) je connaissais #pragma comment (lib,"gdiplus.lib") ^ mais pas #pragma comment (lin,"gdiplus.lib") ^ 2) le compilateur se moque des *.lib, c'est plutôt les *.h qui l'intéresse. Tu n'as pas plutôt des erreurs du linker ?
3) tu n'est pas obligé de passer par un #pragma. Tu peux spécifier la librairie dans l'onglet "Link" des settings (champ "Object/library modules")
En espérant t'avoir aidé.
-- Il faut attendre encore un peu, le temps que les gros genre Microsoft, Google et autres Yahoo se prennent par la main et imposent une solution au bordel mis en place par les unixiens et leurs RFC à la con. - ML in Guide du linuxien pervers - Tiens toi au pinceau, je retire l'echelle
JM
Manuel Leclerc a écrit :
JM a écrit :
Lorsque je compile un exécutable qui contient du code gdi+, je n'ai pas de problème en utilisant #pragma comment(lin,"gdiplus.lib")
Mais actuellement je crée une librairie statique qui contient du code gdi+. Quand je lance la compilation, j'ai des tonnes de messages d'erreurs car le compilateur ne reconnait pas les instructions gdi+ Je ne trouve pas l'équivalent de #pragma comment (lin,"gdiplus.lib") pour les librairies.
En espérant avoir été plus clair.
1) je connaissais #pragma comment (lib,"gdiplus.lib") ^ mais pas #pragma comment (lin,"gdiplus.lib")
C'est ça de taper trop vite ;)
^ 2) le compilateur se moque des *.lib, c'est plutôt les *.h qui l'intéresse. Tu n'as pas plutôt des erreurs du linker ?
Je précise ma remarque. Lorsqu'on utilise les dll directement, je crois qu'il faut : - soit récupérer les adresses des fonctions - soit utiliser un .lib qui évite ce truc chiant (surtout lorsqu'il y a des tonnes de fonctions)
Mais comme je découvre l'utilisation des dll, je passe peut-être à coté de quelque chose.
3) tu n'est pas obligé de passer par un #pragma. Tu peux spécifier la librairie dans l'onglet "Link" des settings (champ "Object/library modules")
Comme je travaille sur une librairie, je ne vois pas d'onglet "Link" (sous visual 6)
Manuel Leclerc a écrit :
JM a écrit :
Lorsque je compile un exécutable qui contient du code gdi+,
je n'ai pas de problème en utilisant
#pragma comment(lin,"gdiplus.lib")
Mais actuellement je crée une librairie statique qui contient
du code gdi+. Quand je lance la compilation, j'ai des tonnes
de messages d'erreurs car le compilateur ne reconnait pas
les instructions gdi+ Je ne trouve pas l'équivalent de
#pragma comment (lin,"gdiplus.lib")
pour les librairies.
En espérant avoir été plus clair.
1) je connaissais
#pragma comment (lib,"gdiplus.lib")
^
mais pas
#pragma comment (lin,"gdiplus.lib")
C'est ça de taper trop vite ;)
^
2) le compilateur se moque des *.lib, c'est plutôt
les *.h qui l'intéresse. Tu n'as pas plutôt des
erreurs du linker ?
Je précise ma remarque.
Lorsqu'on utilise les dll directement, je crois qu'il faut :
- soit récupérer les adresses des fonctions
- soit utiliser un .lib qui évite ce truc chiant (surtout lorsqu'il y a
des tonnes de fonctions)
Mais comme je découvre l'utilisation des dll, je passe peut-être à coté
de quelque chose.
3) tu n'est pas obligé de passer par un #pragma. Tu
peux spécifier la librairie dans l'onglet "Link"
des settings (champ "Object/library modules")
Comme je travaille sur une librairie, je ne vois pas d'onglet "Link"
(sous visual 6)
Lorsque je compile un exécutable qui contient du code gdi+, je n'ai pas de problème en utilisant #pragma comment(lin,"gdiplus.lib")
Mais actuellement je crée une librairie statique qui contient du code gdi+. Quand je lance la compilation, j'ai des tonnes de messages d'erreurs car le compilateur ne reconnait pas les instructions gdi+ Je ne trouve pas l'équivalent de #pragma comment (lin,"gdiplus.lib") pour les librairies.
En espérant avoir été plus clair.
1) je connaissais #pragma comment (lib,"gdiplus.lib") ^ mais pas #pragma comment (lin,"gdiplus.lib")
C'est ça de taper trop vite ;)
^ 2) le compilateur se moque des *.lib, c'est plutôt les *.h qui l'intéresse. Tu n'as pas plutôt des erreurs du linker ?
Je précise ma remarque. Lorsqu'on utilise les dll directement, je crois qu'il faut : - soit récupérer les adresses des fonctions - soit utiliser un .lib qui évite ce truc chiant (surtout lorsqu'il y a des tonnes de fonctions)
Mais comme je découvre l'utilisation des dll, je passe peut-être à coté de quelque chose.
3) tu n'est pas obligé de passer par un #pragma. Tu peux spécifier la librairie dans l'onglet "Link" des settings (champ "Object/library modules")
Comme je travaille sur une librairie, je ne vois pas d'onglet "Link" (sous visual 6)
Manuel Leclerc
JM a écrit :
Manuel Leclerc a écrit :
> 2) le compilateur se moque des *.lib, c'est plutôt > les *.h qui l'intéresse. Tu n'as pas plutôt des > erreurs du linker ?
Je précise ma remarque. Lorsqu'on utilise les dll directement, je crois qu'il faut : - soit récupérer les adresses des fonctions - soit utiliser un .lib qui évite ce truc chiant (surtout lorsqu'il y a des tonnes de fonctions)
Tout à fait. Et utiliser une lib, ce fait normalement en donnant le nom de cette lib au linker, soit directement en tant que paramètre, soit indirectement en codant le nom de la lib dans les obj, avec un #pragma.
Mais comme je découvre l'utilisation des dll, je passe peut-être à coté de quelque chose.
> 3) tu n'est pas obligé de passer par un #pragma. Tu > peux spécifier la librairie dans l'onglet "Link" > des settings (champ "Object/library modules")
Comme je travaille sur une librairie, je ne vois pas d'onglet "Link" (sous visual 6)
On voit l'onglet "Link" quand on travaile sur une librarie (sous visual 6). Mais il faut selectionner le projet et non un source dans la liste de gauche.
--
So before Wine was created, anything which uses a Windows library was a derivative of Windows?
Yes. --Josh Triplett
JM a écrit :
Manuel Leclerc a écrit :
> 2) le compilateur se moque des *.lib, c'est plutôt
> les *.h qui l'intéresse. Tu n'as pas plutôt des
> erreurs du linker ?
Je précise ma remarque.
Lorsqu'on utilise les dll directement, je crois qu'il faut :
- soit récupérer les adresses des fonctions
- soit utiliser un .lib qui évite ce truc chiant (surtout
lorsqu'il y a des tonnes de fonctions)
Tout à fait. Et utiliser une lib, ce fait normalement en
donnant le nom de cette lib au linker, soit directement
en tant que paramètre, soit indirectement en codant le
nom de la lib dans les obj, avec un #pragma.
Mais comme je découvre l'utilisation des dll, je passe
peut-être à coté de quelque chose.
> 3) tu n'est pas obligé de passer par un #pragma. Tu
> peux spécifier la librairie dans l'onglet "Link"
> des settings (champ "Object/library modules")
Comme je travaille sur une librairie, je ne vois pas
d'onglet "Link" (sous visual 6)
On voit l'onglet "Link" quand on travaile sur une
librarie (sous visual 6). Mais il faut selectionner
le projet et non un source dans la liste de gauche.
--
So before Wine was created, anything which uses a Windows library
was a derivative of Windows?
> 2) le compilateur se moque des *.lib, c'est plutôt > les *.h qui l'intéresse. Tu n'as pas plutôt des > erreurs du linker ?
Je précise ma remarque. Lorsqu'on utilise les dll directement, je crois qu'il faut : - soit récupérer les adresses des fonctions - soit utiliser un .lib qui évite ce truc chiant (surtout lorsqu'il y a des tonnes de fonctions)
Tout à fait. Et utiliser une lib, ce fait normalement en donnant le nom de cette lib au linker, soit directement en tant que paramètre, soit indirectement en codant le nom de la lib dans les obj, avec un #pragma.
Mais comme je découvre l'utilisation des dll, je passe peut-être à coté de quelque chose.
> 3) tu n'est pas obligé de passer par un #pragma. Tu > peux spécifier la librairie dans l'onglet "Link" > des settings (champ "Object/library modules")
Comme je travaille sur une librairie, je ne vois pas d'onglet "Link" (sous visual 6)
On voit l'onglet "Link" quand on travaile sur une librarie (sous visual 6). Mais il faut selectionner le projet et non un source dans la liste de gauche.
--
So before Wine was created, anything which uses a Windows library was a derivative of Windows?
Yes. --Josh Triplett
JM
Manuel Leclerc a écrit :
JM a écrit :
Lorsque je compile un exécutable qui contient du code gdi+, je n'ai pas de problème en utilisant #pragma comment(lin,"gdiplus.lib")
Mais actuellement je crée une librairie statique qui contient du code gdi+. Quand je lance la compilation, j'ai des tonnes de messages d'erreurs car le compilateur ne reconnait pas les instructions gdi+ Je ne trouve pas l'équivalent de #pragma comment (lin,"gdiplus.lib") pour les librairies.
En espérant avoir été plus clair.
1) je connaissais #pragma comment (lib,"gdiplus.lib") ^ mais pas #pragma comment (lin,"gdiplus.lib")
Tout à fait ;)
2) le compilateur se moque des *.lib, c'est plutôt les *.h qui l'intéresse. Tu n'as pas plutôt des erreurs du linker ?
Voila le type d'erreur que je recois :
C:Program FilesDiversVC98INCLUDEGdiplusImaging.h(23) : error C2065: 'ImageFormatUndefined' : undeclared identifier C:Program FilesDiversVC98INCLUDEGdiplusImaging.h(23) : error C2501: 'DEFINE_GUID' : missing storage-class or type specifiers C:Program FilesDiversVC98INCLUDEGdiplusImaging.h(23) : error C2078: too many initializers C:Program FilesDiversVC98INCLUDEGdiplusImaging.h(24) : error C2065: 'ImageFormatMemoryBMP' : undeclared identifier C:Program FilesDiversVC98INCLUDEGdiplusImaging.h(24) : error C2501: 'DEFINE_GUID' : missing storage-class or type specifiers C:Program FilesDiversVC98INCLUDEGdiplusImaging.h(24) : error C2374: 'DEFINE_GUID' : redefinition; multiple initialization
Si je compile un exécutable qui contient du gdi+, j'obtiens les mêmes messages sauf si je link implicitement avec le gdiplus.lib
3) tu n'est pas obligé de passer par un #pragma. Tu peux spécifier la librairie dans l'onglet "Link" des settings (champ "Object/library modules")
En mode librairie, je n'ai pas cette option.
Manuel Leclerc a écrit :
JM a écrit :
Lorsque je compile un exécutable qui contient du code gdi+,
je n'ai pas de problème en utilisant
#pragma comment(lin,"gdiplus.lib")
Mais actuellement je crée une librairie statique qui contient
du code gdi+. Quand je lance la compilation, j'ai des tonnes
de messages d'erreurs car le compilateur ne reconnait pas
les instructions gdi+ Je ne trouve pas l'équivalent de
#pragma comment (lin,"gdiplus.lib")
pour les librairies.
En espérant avoir été plus clair.
1) je connaissais
#pragma comment (lib,"gdiplus.lib")
^
mais pas
#pragma comment (lin,"gdiplus.lib")
Tout à fait ;)
2) le compilateur se moque des *.lib, c'est plutôt
les *.h qui l'intéresse. Tu n'as pas plutôt des
erreurs du linker ?
Voila le type d'erreur que je recois :
C:Program FilesDiversVC98INCLUDEGdiplusImaging.h(23) : error C2065:
'ImageFormatUndefined' : undeclared identifier
C:Program FilesDiversVC98INCLUDEGdiplusImaging.h(23) : error C2501:
'DEFINE_GUID' : missing storage-class or type specifiers
C:Program FilesDiversVC98INCLUDEGdiplusImaging.h(23) : error C2078:
too many initializers
C:Program FilesDiversVC98INCLUDEGdiplusImaging.h(24) : error C2065:
'ImageFormatMemoryBMP' : undeclared identifier
C:Program FilesDiversVC98INCLUDEGdiplusImaging.h(24) : error C2501:
'DEFINE_GUID' : missing storage-class or type specifiers
C:Program FilesDiversVC98INCLUDEGdiplusImaging.h(24) : error C2374:
'DEFINE_GUID' : redefinition; multiple initialization
Si je compile un exécutable qui contient du gdi+, j'obtiens les mêmes
messages sauf si je link implicitement avec le gdiplus.lib
3) tu n'est pas obligé de passer par un #pragma. Tu
peux spécifier la librairie dans l'onglet "Link"
des settings (champ "Object/library modules")
Lorsque je compile un exécutable qui contient du code gdi+, je n'ai pas de problème en utilisant #pragma comment(lin,"gdiplus.lib")
Mais actuellement je crée une librairie statique qui contient du code gdi+. Quand je lance la compilation, j'ai des tonnes de messages d'erreurs car le compilateur ne reconnait pas les instructions gdi+ Je ne trouve pas l'équivalent de #pragma comment (lin,"gdiplus.lib") pour les librairies.
En espérant avoir été plus clair.
1) je connaissais #pragma comment (lib,"gdiplus.lib") ^ mais pas #pragma comment (lin,"gdiplus.lib")
Tout à fait ;)
2) le compilateur se moque des *.lib, c'est plutôt les *.h qui l'intéresse. Tu n'as pas plutôt des erreurs du linker ?
Voila le type d'erreur que je recois :
C:Program FilesDiversVC98INCLUDEGdiplusImaging.h(23) : error C2065: 'ImageFormatUndefined' : undeclared identifier C:Program FilesDiversVC98INCLUDEGdiplusImaging.h(23) : error C2501: 'DEFINE_GUID' : missing storage-class or type specifiers C:Program FilesDiversVC98INCLUDEGdiplusImaging.h(23) : error C2078: too many initializers C:Program FilesDiversVC98INCLUDEGdiplusImaging.h(24) : error C2065: 'ImageFormatMemoryBMP' : undeclared identifier C:Program FilesDiversVC98INCLUDEGdiplusImaging.h(24) : error C2501: 'DEFINE_GUID' : missing storage-class or type specifiers C:Program FilesDiversVC98INCLUDEGdiplusImaging.h(24) : error C2374: 'DEFINE_GUID' : redefinition; multiple initialization
Si je compile un exécutable qui contient du gdi+, j'obtiens les mêmes messages sauf si je link implicitement avec le gdiplus.lib
3) tu n'est pas obligé de passer par un #pragma. Tu peux spécifier la librairie dans l'onglet "Link" des settings (champ "Object/library modules")
En mode librairie, je n'ai pas cette option.
Manuel Leclerc
JM a écrit :
Voila le type d'erreur que je recois :
[...]
Si je compile un exécutable qui contient du gdi+, j'obtiens les mêmes messages sauf si je link implicitement avec le gdiplus.lib
Les messages d'erreurs que tu donnes proviennent du compilateur et montrent que tu n'inclues pas les bon headers au bon endroit. Je ne comprend pas le rapport avec le link.
> 3) tu n'est pas obligé de passer par un #pragma. Tu > peux spécifier la librairie dans l'onglet "Link" > des settings (champ "Object/library modules")
En mode librairie, je n'ai pas cette option.
OK. J'avais oublié un peu vite que tu voulais faire une librarie statique. C'est une sorte d'obj en fait. Le link avec les autres librairies dont ta librairie a besoin seront fait au moment du link qui utilisera ta librairie.
Essaye de faire un seul petit source de quelques lignes montrant le problème et poste le. J'essaierai de tester ce que ça donne avec mon VC en construisant un exe et une lib statique avec ton source, si j'ai le temps avant ce soir :-(
-- <debian> we'll discuss it and let you know in 5 years. --jjse
JM a écrit :
Voila le type d'erreur que je recois :
[...]
Si je compile un exécutable qui contient du gdi+, j'obtiens
les mêmes messages sauf si je link implicitement avec le
gdiplus.lib
Les messages d'erreurs que tu donnes proviennent du
compilateur et montrent que tu n'inclues pas les
bon headers au bon endroit. Je ne comprend pas le
rapport avec le link.
> 3) tu n'est pas obligé de passer par un #pragma. Tu
> peux spécifier la librairie dans l'onglet "Link"
> des settings (champ "Object/library modules")
En mode librairie, je n'ai pas cette option.
OK. J'avais oublié un peu vite que tu voulais faire
une librarie statique. C'est une sorte d'obj en fait.
Le link avec les autres librairies dont ta librairie
a besoin seront fait au moment du link qui utilisera
ta librairie.
Essaye de faire un seul petit source de quelques lignes
montrant le problème et poste le. J'essaierai de tester
ce que ça donne avec mon VC en construisant un exe et
une lib statique avec ton source, si j'ai le temps avant
ce soir :-(
--
<debian> we'll discuss it and let you know in 5 years.
--jjse
Si je compile un exécutable qui contient du gdi+, j'obtiens les mêmes messages sauf si je link implicitement avec le gdiplus.lib
Les messages d'erreurs que tu donnes proviennent du compilateur et montrent que tu n'inclues pas les bon headers au bon endroit. Je ne comprend pas le rapport avec le link.
> 3) tu n'est pas obligé de passer par un #pragma. Tu > peux spécifier la librairie dans l'onglet "Link" > des settings (champ "Object/library modules")
En mode librairie, je n'ai pas cette option.
OK. J'avais oublié un peu vite que tu voulais faire une librarie statique. C'est une sorte d'obj en fait. Le link avec les autres librairies dont ta librairie a besoin seront fait au moment du link qui utilisera ta librairie.
Essaye de faire un seul petit source de quelques lignes montrant le problème et poste le. J'essaierai de tester ce que ça donne avec mon VC en construisant un exe et une lib statique avec ton source, si j'ai le temps avant ce soir :-(
-- <debian> we'll discuss it and let you know in 5 years. --jjse
Arnaud Debaene
JM wrote:
2) le compilateur se moque des *.lib, c'est plutôt les *.h qui l'intéresse. Tu n'as pas plutôt des erreurs du linker ?
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.
- 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.
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.
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.
Arnaud MVP - VC
JM wrote:
2) le compilateur se moque des *.lib, c'est plutôt
les *.h qui l'intéresse. Tu n'as pas plutôt des
erreurs du linker ?
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.
- 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.
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.
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.
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.
- 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.
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.
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.
Arnaud MVP - VC
Manuel Leclerc
Arnaud Debaene a écrit :
- dans la liste des modules passés au librarian si tu fais une lib statique.