GDI+ Problème d'installation!

Sujets variés concernant le développement en PureBasic
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

GDI+ Problème d'installation!

Message par nico »

J'ai téléchargé l'exe de Denis, et déjà ce que je ne comprend pas, c'est que je ne peut pas coché: fichier lib (XP32) mais je peux le faire pour Vista?

Lorsque j'essaie de compiler un exemple, j'ai l'erreur suivante:
Polink Fatal error: File no found Gdiplus.lib

Où doit se trouver ce fichier exactement?

Je viens de voir qu'en copiant le fichier gdiplus.lib (de vista?) dans le répertoire "PureLibraries\Windows\Libraries" ça marche
Pourquoi n'est il pas copier dedans à l'extraction?


Aussi j'ai lu qu'il fallait la lib Com de Freak, c'est juste pour la macro DefineGUID où c'est pour beaucoup d'autres fonctions?
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Message par GeBonet »

Bonsoir,
Il s'agit de GDI+ ....
1- A partir du répertoire du PureBasic lancer l'exe de Denis... Il va créer un répertoire "GDIplus_1_0"
2- a la fin il propose le fichier "ComFramework.zip" il faut le télécharger
3- Il sera aussi dans le répertoire de PureBasic
4- Le décompressez aussi dans le répertoire PureBasic. Il va créer un répertoire ComFramework et surtout placer deux fichier dans le répertoire "résidents"

A partir de là tout est en place... Je suppose que d'après ce que tu dis c'est ce qui à été fait sauf pour "ComFramework.zip" peut-être
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

En effet je n'ai pas installé ComFramework.zip

J'ai ajouté ma propre macro pour DefineGUID

Code : Tout sélectionner

Macro DefineGUID(IID, data1, data2, data3, data4, data5, data6, data7, data8, data9, data10, data11)
  DataSection
    IID:
      Data.l data1
      Data.w data2, data3
      Data.b data4, data5, data6, data7, data8, data9, data10, data11
  EndDataSection 
EndMacro
et cette macro pour CompareGUID

Code : Tout sélectionner

Macro CompareGUID(guid1,guid2)
  CompareMemory(guid1,guid2,16)
EndMacro
J'ai testé quelques exemples, je ne sais pas si d'autres fonctions font appel à la lib Com de Freak

Je trouve dommage qu'il faille installé plusieurs packages pour GDI+, je crois à ce que j'ai pu lire que GDI+ n'a pas un réel besoin de cette lib sinon que pour quelques fonctions alors si on peut s'en passer.
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Message par GeBonet »

Ben voilà une solution super. :) Mais dans le pack de Freak il y a aussi un répertoire crée avec pas mal de "choses" et je n'ai ps regardé plus loin, ça fait un paquet à tester...

Mais ce serai intéressant de placer tes macro en "Include" et juste copier la ligne d'appel quand c'est necessaire. Si bien sur il n'y a que ça ! :lol:
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: GDI+ Problème d'installation!

Message par Anonyme2 »

nico a écrit :J'ai téléchargé l'exe de Denis, et déjà ce que je ne comprend pas, c'est que je ne peut pas coché: fichier lib (XP32) mais je peux le faire pour Vista?
Salut Nico, l'exe teste la version de Windows, si tu as XP ou inférieure, il installe le fichier gdiplus.lib pour XP (609 fonctions), si ta as Vista c'est la version du fichier gdiplus.lib pour Vista qui comporte plus de fonctions. Si tu as vista, j'ai interdit de pouvoir cocher la case du fichier lib pour XP. Si tu as une vesion inférieure à Vista, j'ai interdit de pouvoir cocher le fichier lib de Vista. Il doit avoir une copie du fichier lib dans le dossier fichier_Lib_Vista32 ou fichier_Lib_XP32 selon le cas là ou tu as décompressé.
nico a écrit :Lorsque j'essaie de compiler un exemple, j'ai l'erreur suivante:
Polink Fatal error: File no found Gdiplus.lib

Où doit se trouver ce fichier exactement?


Je viens de voir qu'en copiant le fichier gdiplus.lib (de vista?) dans le répertoire "PureLibraries\Windows\Libraries" ça marche
Pourquoi n'est il pas copier dedans à l'extraction?
Cette erreur ne devrais pas arriver, le fichier lib s'il a été sélectionné (normalement il y est par défaut) cela veut dire soit qu'il a été décompressé dans un mauvais dossier (c'est possible vu que cela devient pénible de trouver le chemin de PB ça change avec chaque version de PB) soit il y a eu une erreur et il n'a pas été décompressé ce qui doit plus être le cas.

Ce fichier doit se trouver dans le dossier \PureLibraries\Windows\Libraries

Quelle que soit la version de Windows (j'ai fait des essais avec XP et le fichier lib de Vista) si tu as le fichier lib de Vista ça fonctionne.
Aussi j'ai lu qu'il fallait la lib Com de Freak, c'est juste pour la macro DefineGUID où c'est pour beaucoup d'autres fonctions?
Oui, certains exemples utilisent la macro de Freak DefineGUID , c'est tout ce que j'utilise des son très bon travail.
Pour les quelques exemples qui utilisent cette macro, tu peux retirer la macro de Freak et définir de manière classique les GUID en data et leur utilisation avec le ? devant l'étiquette ou écrire la même macro que freak ce que tu as fait.


Désolé pour le problème du lib, donnes-moi la version de Windows que tu utilises pour que je fasse des tests et la version de PB.
Pour PB 4.30 à partir de beta 4, je préconise la version qui est dans ma signature, pour les version précédente, l'ancienne version dont le lien est dans les messages sur GDI+


A+
Denis
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Salut Denis,

J'ai Window XP et la version Purebasic 4.30 installé ainsi que la 4.20 et je n'ai pas la possibilité de cocher: fichier lib (XP32)

Pour l'installation, je choisis le chemin du dossier Purebasic de la 4.30
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Message par GeBonet »

Bonjour,
Je rebondis sur cette question d'installation... Et reprend une partie de "critique" vis à vis de cela justement et qui est :
Pourquoi j'ai tant de problèmes pour passer d'une version PB à l'autre ? Surtout avec l'IDE de base, JaPBe est beaucoup plus souple... Pourquoi Chaque version de PB dans son répertoire à lui, est-il dépendant de la version de PB que l'on viens de quitter et encore mieux, AVOIR deux fenêtres ouvertes, l'une avec 4.2 et l'autre avec 4.3 qui travaillerais sur leurs version d'un même programme, ayant les mêmes fichiers (mais dans leurs répertoires à eux)... Faire tourner l'ancien développement en l'adaptant dans le nouveau... Bref que lorsque je Click sur 4.2 je ne me retrouve pas dans le répertoire de 4.3 et vice versa... J'ai lu, la doc cela est parait-il possible ??? Jusque maintenant je n'y suis pas vraiment arrivé, et ce parce que tout les deux font référence au même "Pref" dans le "Document/Setting/..... " Et le plus embêtant c'est l'utilisation de compilateurs de l'autre version... Si l'on veux éviter cela à coup presque certains, c'est de changer à chaque fois dans l'IDE de base dans Option Compilateur et les Préférences...
Il faudrait pour résoudre cela que chaque versions quand elle s'installe considère SON répertoire d'installation comme SA base à lui... Quitte à dupliquer les répertoire des application sur lesquelles ont travaille.
Qu'en dites vous ? En tout cas tel quel, il se produit des problèmes d'installations tel qu'avec GDI+ et d'application.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Je pense qu'il y a un sac de noeuds avec la décompression du lib, ça marchait sur ma bécane sous XP et Vista. Je vais jeter un oeuil, tu as installé quelle version de mes fichiers d"exemples ? la version pour 4.30 beta 4 ou celle d'avant ?


Il se peut aussi que le chemin de PB retrouver par le code que j'utilise amène au dossier de PB par exemple 4.20 et le fichier lib existe donc il le trouve et j'interdis de pouvoir cocher la case car le fichier est déjà présent, et si tu utilises la version 4.30 et que le fichier lib n'est pas présent pour cette version, tu as l'erreur polib.

Voici la procedure que j'utilise pour retrouver le chemin, tu peux me donner le chemin qu'il retrouve dans ton cas ? Merci

Code : Tout sélectionner

Procedure.s CheminPureBasic()
     Protected hKey1.l, Type.l, Res.l, Folder$, lpbData.l, cbData.l
     
     cbData = (#MAX_PATH*2) + 2
     lpbData = AllocateMemory(cbData)
     
     Folder$ = ""
     hKey1 = 0
     Type = 0
     Res = -1
     
     Select OSVersion()
          Case #PB_OS_Windows_95, #PB_OS_Windows_98, #PB_OS_Windows_ME
               Res = RegOpenKeyEx_(#HKEY_LOCAL_MACHINE, "Software\Classes\PureBasic.exe\shell\open\command", 0, #KEY_ALL_ACCESS, @hKey1)
          Case #PB_OS_Windows_NT3_51, #PB_OS_Windows_NT_4, #PB_OS_Windows_2000, #PB_OS_Windows_XP, #PB_OS_Windows_Server_2003
               Res = RegOpenKeyEx_(#HKEY_CLASSES_ROOT, "Applications\PureBasic.exe\shell\open\command", 0, #KEY_ALL_ACCESS, @hKey1)
          Case #PB_OS_Windows_Vista, #PB_OS_Windows_Server_2008, #PB_OS_Windows_Future
               Res = RegOpenKeyEx_(#HKEY_CURRENT_USER, "Software\Classes\PureBasic.exe\shell\open\command", 0, #KEY_ALL_ACCESS, @hKey1)
     EndSelect
     
     If Res = #ERROR_SUCCESS
          If RegQueryValueEx_(hKey1, "", 0, @Type, lpbData, @cbData) = #ERROR_SUCCESS
               Folder$ = PeekS(lpbData)
               Folder$ = GetPathPart(Mid(Folder$, 2, Len(Folder$)-7))
          EndIf
          RegCloseKey_(hKey1)
     EndIf
     
     If lpbData
          FreeMemory(lpbData)
          lpbData = 0
     EndIf
     
     ; la chaine avec la beta4 se présente comme ceci
     ; C:\Program Files\PureBasic 4.00\PureBasic.exe" "%1" /P "C:\Documents And Settings\ww\Application Data\PureBasic\PureBasic.prefs"
     ; je teste sur le % en retirant ensuite les 3 derniers caractères
     If FindString(Folder$, "%", 1)
          Folder$ = StringField(Folder$, 1, "%")
          Folder$ = GetPathPart(Folder$)
          Debug Folder$
          
     EndIf
     
     ProcedureReturn Folder$
EndProcedure


Pour la décompression de l'ensemble, il n'est pas obligatoire de décompresser dans le dossier de PB, on peut décompresser le tout sur n'importe quel disque/dossier, ça doit fonctionner à partir du moment ou on ne modifie pas les chemin d'accès dans le code PB des exemples. Un fichier est créé de manière dynamique car son contenu dépend du chemin de décompression, c'est un fichier ressource utilisé par 2 exemples GDI+.

Je n'installe strictement rien dans la base de registre.

A+
Denis
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Message par GeBonet »

Salut Denis,
Au cas ou, la "critique" ne s'adresse pas à toi, mais à l'installation de PB lui même qui conduit a ton explication... Et qui serait simplifié si les versions de PB étaient parfaitement indépendante...
Denis a écrit :Je pense qu'il y a un sac de noeuds avec la décompression du lib, ça marchait sur ma bécane sous XP et Vista. Je vais jeter un oeuil, tu as installé quelle version de mes fichiers d"exemples ? la version pour 4.30 beta 4 ou celle d'avant ?

Il se peut aussi que le chemin de PB retrouver par le code que j'utilise amène au dossier de PB par exemple 4.20 et le fichier lib existe donc il le trouve et j'interdis de pouvoir cocher la case car le fichier est déjà présent, et si tu utilises la version 4.30 et que le fichier lib n'est pas présent pour cette version, tu as l'erreur polib. Etc...
Et si je suis intervenus dans votre conversation c'est simplement pour cette remarque.
A+
Gerhard
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Message par GeBonet »

Et la base des problèmes provient du fait que si l'on travaille avec deux versions, c'est la dernières qui est référencée dans "C:\Documents And Settings\ww\Application Data\PureBasic\PureBasic.prefs"

D'où il installera la version GDI+ pour 4.3 dans 4.2 si par hasard quand tu as quitté tu travaillais en 4.2... Et inversement.. C'est comme ça que j'ai aussi pataugé pendant 3 ou 4 heures. Et quand j'ai compris et en replaçant les choses à leurs place. En l'occurrence copier tel quel le répertoire GDI+1.0 de 4.2 dans 4.3 qui instantanément s'est mis à fonctionner... Puis réinstaller le GDI+ de 4.2 dans 4.2 en veillant bien que ce qui était cette fois dans C:\documents And setting.... "soit en conformité avec 4.2...
Denis a écrit : ; la chaine avec la beta4 se présente comme ceci
; C:\Program Files\PureBasic 4.00\PureBasic.exe" "%1" /P "C:\Documents And Settings\ww\Application Data\PureBasic\PureBasic.prefs"
; je teste sur le % en retirant ensuite les 3 derniers caractères
Voilà, pourquoi je suis intervenus... Maintenant étant trop nouveau dans l'histoire je peu me tromper, en tout cas c'est ce qui s'est passé.
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Message par GeBonet »

Encore moi... Je pense que en l'état des chose, en plaçant "bêtement" un "PathRequester" pour désigner l'endroit de l'installation tu couperais cours aux problème. Peut-être avec un avis préalable signalant qu'il faut savoir ou on installe et pourquoi pas que une fois choisit tu vérifie que tu te trouve bien dans le répertoire de la bonne version... ???

Maintenant je ne dis plus rien :lol:
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

GeBonet a écrit :Encore moi... Je pense que en l'état des chose, en plaçant "bêtement" un "PathRequester" pour désigner l'endroit de l'installation tu couperais cours aux problème. Peut-être avec un avis préalable signalant qu'il faut savoir ou on installe et pourquoi pas que une fois choisit tu vérifie que tu te trouve bien dans le répertoire de la bonne version... ???

Maintenant je ne dis plus rien :lol:
C'est ce que je vais faire pour confirmer le dossier trouvé, c'est le plus simple dans l'immédiat.

Merci

A+
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

To code me donne le chemin de Purebasic (version 4.20), mais de toute façon on choisit le dossier d'install, non!?

(une chose bizarre c'est que si j'exécute ton code depuis la 4.30, je n'obtiens rien)

J'ai télécharger GDI+ pour la 4.30 depuis ta signature.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

nico a écrit :To code me donne le chemin de Purebasic (version 4.20), mais de toute façon on choisit le dossier d'install, non!?
(une chose bizarre c'est que si j'exécute ton code depuis la 4.30, je n'obtiens rien)
Le dossier d'install n'est pas lié à Purebasic, ce n'est qu'un chemin de décompression des fichiers. Chaque exemple PB a un chemin relatif sur le wrapper Gdi+ (XIncludeFile "..\..\gdiplus.pbi" qui est indépendant du chemin de PB. Normalement, si le lib et la dll Gdiplus sont présents dans la version de PB qui exécute l'exemple, cela devrait fonctionner.

Je vais réinstaller la version 4.20 si je ne l'ai pas effacée et faire des tests la semaine prochaine.

C'est vraiment bizarre que tu n'ai rien depuis la version 4.30 car c'est indépendant de la version de PB sauf pour les instructions PB qui changent en fonction des versions.

Vraiment aucun message d'erreur lorsque tu lances un exemple?
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Vraiment aucun message d'erreur lorsque tu lances un exemple?
Je parlais de ton code pour tester le dossier de Purebasic, il ne me donne pas le chemin (je n'ai rien) si je le lance depuis la version 4.30.

Sinon je n'ai pas de problème pour compiler les exemples.

Je reviens sur la lib de Com de freak, je trouve vraiment dommage que l'on soit obliger de la télécharger pour GDI+, surtout qu'on ne fait pas appel aux objet COM pour faire fonctionner GDI+, tout cela pour une ou deux fonctions.

Cela dit je respecte le travail énorme que tu as fait, c'est juste un avis personnel. :)
Répondre