banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

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

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

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 big_smile

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

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

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

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

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 smile).

Le principal, c'est qu'on a le résultat finalement smile smile


Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !

Hors ligne

 

Pied de page des forums

Powered by FluxBB