#1 Mon 05 July 2010 16:20
- lukhan
- Participant occasionnel
- Date d'inscription: 5 Jul 2010
- Messages: 11
programmation sous minGW et GDAL
Bonjour à tous,
je souhaite réaliser un programme en c++ avec la lib GDAL.
J'ai donc installé minGW et FWTools.
J'ai ensuite créé un programme simple accompagné d'un makefile, et au moment de la compilation, j'ai des "undefined reference to..."
Je pense avoir bien configuré mon makefile : ajout du répertoire include, et lien vers gdal_i.lib. D'ailleurs la fonction GDALAllRegister(); ainsi que GDALOpen() fonctionnent. Ca bloque ensuite quand je veux utiliser GetRaserXSize() et compagnie...
Ma question est de savoir si il faut avant tout compiler GDAL avec mingw pour pouvoir l'utiliser dans un programme en c++, compilé avec minGW, ou si je peux directement utiliser la lib fournie avec FWTools ?
Merci d'avance pour votre aide.
Hors ligne
#2 Mon 05 July 2010 17:03
Re: programmation sous minGW et GDAL
Le principe de la distribution de fichier, c'est qu'ils sont utilisables.
Le problème vient peut-être que d'autres fichiers doivent être utilisés, non ? (Genre driver de format spécifique)
J'ai ensuite créé un programme simple accompagné d'un makefile, et au moment de la compilation, j'ai des "undefined reference to..."
Et tu as continué au lieu d'enlever de corriger ton programme pour qu'il n'y ait plus d'avertissements ?
Je te propose que tu t'arrêtes sur ces avertissements et qu'on les résolvent ensemble si besoin. Ce n'est pas parce qu'il n'y a pas d'erreur de segmentation que le programme est bon !
Dans un deuxième temps, tu pourras nous parler exactement de tes fichiers pris pour les tests, de comment ces fichiers fonctionnent bien avec le programme gdalinfo par exemple...
Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !
Hors ligne
#3 Mon 05 July 2010 17:23
- lukhan
- Participant occasionnel
- Date d'inscription: 5 Jul 2010
- Messages: 11
Re: programmation sous minGW et GDAL
Le principe de la distribution de fichier, c'est qu'ils sont utilisables.
Donc les .lib livrés avec FWTools sont linkables avec un projet compilé grâce à minGW ? Sans compilation des sources de la lib avec minGW avant ?
Et tu as continué au lieu d'enlever de corriger ton programme pour qu'il n'y ait plus d'avertissements ?
Ce problème apparait à la compilation dès l'utilisation des classes GDAL. Par exemple quand j'essaye d'appeler la méthode GetRasterXSize(), j'obtiens :
Code:
undefined reference to `GDALDataset::GetRasterXSize()
Sinon les appels aux fonctions standards du c++ fonctionnent.
Hors ligne
#4 Mon 05 July 2010 17:36
Re: programmation sous minGW et GDAL
Donc les .lib livrés avec FWTools sont linkables avec un projet compilé grâce à minGW ? Sans compilation des sources de la lib avec minGW avant ?
C'est le principe de bibliothèque. Est-ce que quand tu vas à la bibliothèque tu sélectionnes les pages que tu veux et on te les imprimes afin que tu puisses les consulter ?
Sinon les appels aux fonctions standards du c++ fonctionnent.
Encore heureux
Tu as bien inclus gdal_priv.h dans tous les fichiers .cpp utilisant GDALDataset::GetRasterXSize te permettant ainsi d'utiliser l'API C++ ? (Comme indiqué dans la documentation de l'API ?)
p.s : L'API C est à utiliser si tu veux que ton programme soit le plus portable possible (cf http://trac.osgeo.org/gdal/wiki/FAQMisc … PIvsCAPI).
Dernière modification par Jeirhome (Mon 05 July 2010 17:40)
Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !
Hors ligne
#5 Mon 05 July 2010 17:52
- lukhan
- Participant occasionnel
- Date d'inscription: 5 Jul 2010
- Messages: 11
Re: programmation sous minGW et GDAL
Tu as bien inclus gdal_priv.h dans tous les fichiers .cpp utilisant GDALDataset::GetRasterXSize te permettant ainsi d'utiliser l'API C++ ? (Comme indiqué dans la documentation de l'API ?)
Oui, d'ailleurs j'arrive à ouvrir l'image en utilisant GDALOpen(). C'est après que ça se corse, quand j'essaye d'appeler les méthodes du GDALDataset.
Hors ligne
#6 Mon 05 July 2010 18:15
- rouault
- Participant assidu
- Date d'inscription: 26 Apr 2009
- Messages: 168
Re: programmation sous minGW et GDAL
Je serais beaucoup moins optimiste que Jeirhome sur le fait que tu puisses utiliser les .lib de FWTools (compilé avec MSVC) avec un projet compilé avec MinGW. En fait, je suis même à peu près sûr que ça n'est pas possible étant donné que les 2 compilateurs ne "décorent" pas les symboles C++ de la même façon. Rien que sur les symboles C, on peut avoir parfois des problèmes sur la présence ou non d'underscore en tête, ou la présence d'un @ordinal en fin suivant qu'il s'agisse d'un symbole __cdecl ou __stdcall.
2 options :
- tu recompiles GDAL avec MinGW. Ce n'est pas officiellement "supporté", mais c'est possible moyennement quelques ajustements de makefile
- tu utilises l'API C uniquement, ce qui devrait suffire à 90% des utilisateurs de GDAL. Par ex, GDALDataset::GetRasterXSize() --> GDALGetRasterXSize()
Hors ligne
#7 Mon 05 July 2010 18:21
Re: programmation sous minGW et GDAL
Oui, d'ailleurs j'arrive à ouvrir l'image en utilisant GDALOpen().
La remarque n'est pas pertinente car GDALOpen() fait partie de l'API C, alors que ton problème vient lorsque tu utilises l'API C++.
Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !
Hors ligne
#8 Mon 05 July 2010 18:23
- lukhan
- Participant occasionnel
- Date d'inscription: 5 Jul 2010
- Messages: 11
Re: programmation sous minGW et GDAL
En fait, je suis même à peu près sûr que ça n'est pas possible étant donné que les 2 compilateurs ne "décorent" pas les symboles C++ de la même façon.
Mes craintes étaient fondées !
J'essaye donc d'utiliser l'API C (j'ai pas envie de me taper une compile merdique avec minGW) et je vous tiens au courant.
EDIT : Ok, ça fonctionne avec l'API C.
Merci pour votre aide !
Dernière modification par lukhan (Mon 05 July 2010 18:32)
Hors ligne
#9 Mon 05 July 2010 18:41
Re: programmation sous minGW et GDAL
Je serais beaucoup moins optimiste que Jeirhome
Disons que j'étais optimiste car le sujet m'avait l'air ouvert. Je n'avais pas l'impression que le C++ ou que minGW était des contraintes absolues.
Je n'ai vu qu'en cours de route la note du fichier README_DEV.TXT :
Note that package is built using Microsoft VC 7.1. Other compiler
versions will generally be limited to using the C API, instead of
the C++ API.
J'ai peut-être un peu pêché par optimisme, mais GDAL en version pré-compilée ne m'intéresse guère, et je n'ai guère usé les différents compilateurs du marché en parallèle (un après l'autre, ça suffit ).
Le principal, c'est qu'on a le résultat finalement
Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !
Hors ligne