OVH Cloud OVH Cloud

Merci de votre aide

22 réponses
Avatar
Frédéric DURY-GHERRAK
Bonjour,

Je ne suis qu'intermediaire pour poser une question au profit d'un de mes
stagiaires actuellement incarcéré
voici son post tel qu'il l'a rédigé :

"Je définis une classe à l'aide d'un template dans un fichier ".h" et je
fais les déclarations dns un fichier ".cpp" en ajoutant le mot-clé "export"
devant chq m"thode comme prescrit dans le straistrup.
Tou compile correctement (avec g++ 3.3.2) mais quand je tente de lier le
".o" au ".so" avec un programme, le compilateur me dit que toutes les
méthodes du "cpp" sont "undefined".
Y a-t-il une option du compilateur à utiliser ?

Merci

10 réponses

1 2 3
Avatar
Marc Boyer
Le 09-03-2006, Frédéric DURY-GHERRAK a écrit :
Je ne suis qu'intermediaire pour poser une question au profit d'un de mes
stagiaires actuellement incarcéré
voici son post tel qu'il l'a rédigé :

"Je définis une classe à l'aide d'un template dans un fichier ".h" et je
fais les déclarations dns un fichier ".cpp" en ajoutant le mot-clé "export"
devant chq m"thode comme prescrit dans le straistrup.


Je viens de relire, le Stroustrup en VF n'est pas très explicite sur
ce point. En fait, g++ ne sait pas gérer le mot export.

Le plus simple est de faire un #include du .cpp dans le .h...

Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exiter des sots
IF -- Rudyard Kipling (Trad. Paul Éluard)

Avatar
Jean-Marc Bourguet
"Frédéric DURY-GHERRAK" writes:

Je ne suis qu'intermediaire pour poser une question au profit d'un
de mes stagiaires actuellement incarcéré

voici son post tel qu'il l'a rédigé :

"Je définis une classe à l'aide d'un template dans un fichier ".h"
et je fais les déclarations dns un fichier ".cpp" en ajoutant le
mot-clé "export" devant chq m"thode comme prescrit dans le
straistrup. Tou compile correctement (avec g++ 3.3.2) mais quand je
tente de lier le ".o" au ".so" avec un programme, le compilateur me
dit que toutes les méthodes du "cpp" sont "undefined".


g++ n'implemente pas export (a ma connaissance, 2 compilateurs pour le
moment le font: como et icc).

export doit aussi etre utilise lors de la declaration.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
Jean-Marc Bourguet
(Fabien CHÊNE) writes:

Jean-Marc Bourguet writes:

g++ n'implemente pas export (a ma connaissance, 2
compilateurs pour le moment le font: como et icc).


icc support export ?


$ icc -help | grep export
-export enable the export template feature
-export_dir <dir>
add directory to export template search path

Donc la feature est là.

Ils ont fixé les bugs que je leur ai reporté sur ce sujet,
donc ils la supportent. :-)

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org


Avatar
fabien.chene.nospam
Jean-Marc Bourguet writes:

g++ n'implemente pas export (a ma connaissance, 2 compilateurs pour le
moment le font: como et icc).


icc support export ? Je n'en trouve aucune mention sur leur site. Je
l'essaye de temps en temps -- avec une license non commerciale de
courte durée -- et il ne me semble pas avoir pu utiliser export ...

Il y a de très bonnes chances pour que les compilateurs utilisant le
front end d'EDG proposent export. On peut trouver la liste des clients
d'EDG ici :

http://www.edg.com/resellers.html


-- Fab --

Avatar
fabien.chene.nospam
Jean-Marc Bourguet writes:

(Fabien CHÊNE) writes:

Jean-Marc Bourguet writes:

g++ n'implemente pas export (a ma connaissance, 2
compilateurs pour le moment le font: como et icc).


icc support export ?


$ icc -help | grep export
-export enable the export template feature
-export_dir <dir>
add directory to export template search path

Donc la feature est là.


Ouch, merci du renseignement !

J'avais pourtant (sauf erreur) testé export sur icc, mais bien sur
sans lire l'aide en détail, et donc sans utiliser l'option
-export. C'est bizarre qu'ils ne fassent pas d'avantage étalage de
cette feature d'ailleurs.

Ils ont fixé les bugs que je leur ai reporté sur ce sujet,
donc ils la supportent. :-)


J'ai carrément l'impression de débarquer :-)


-- Fab --



Avatar
Marc Duflot
Fabien CHÊNE wrote:

icc support export ? Je n'en trouve aucune mention sur leur site. Je
l'essaye de temps en temps -- avec une license non commerciale de
courte durée -- et il ne me semble pas avoir pu utiliser export ...

Il y a de très bonnes chances pour que les compilateurs utilisant le
front end d'EDG proposent export. On peut trouver la liste des clients
d'EDG ici :

http://www.edg.com/resellers.html


Précisément, icc utilise le front-end EDG même s'il ne figure pas dans
la liste.

Avatar
TERENCE
"Marc Boyer" a écrit dans le message de news:
Je ne suis qu'intermediaire pour poser une question au profit d'un de mes
stagiaires actuellement incarcéré
voici son post tel qu'il l'a rédigé :

"Je définis une classe à l'aide d'un template dans un fichier ".h" et je
fais les déclarations dns un fichier ".cpp" en ajoutant le mot-clé "export"
devant chq m"thode comme prescrit dans le straistrup.


Je viens de relire, le Stroustrup en VF n'est pas très explicite sur
ce point. En fait, g++ ne sait pas gérer le mot export.

Le plus simple est de faire un #include du .cpp dans le .h...


Inclure un ".cpp" dans un header ... Hahem ...


Avatar
Marc Boyer
Le 10-03-2006, TERENCE a écrit :

"Marc Boyer" a écrit dans le message de news:
Je ne suis qu'intermediaire pour poser une question au profit d'un de mes
stagiaires actuellement incarcéré
voici son post tel qu'il l'a rédigé :

"Je définis une classe à l'aide d'un template dans un fichier ".h" et je
fais les déclarations dns un fichier ".cpp" en ajoutant le mot-clé "export"
devant chq m"thode comme prescrit dans le straistrup.


Je viens de relire, le Stroustrup en VF n'est pas très explicite sur
ce point. En fait, g++ ne sait pas gérer le mot export.

Le plus simple est de faire un #include du .cpp dans le .h...


Inclure un ".cpp" dans un header ... Hahem ...


Et, comment fais-tu toi avec des templates ?

Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exiter des sots
IF -- Rudyard Kipling (Trad. Paul Éluard)



Avatar
TERENCE
"Marc Boyer" a écrit dans le message de news:

"Marc Boyer" a écrit dans le message de news:
Je ne suis qu'intermediaire pour poser une question au profit d'un de mes
stagiaires actuellement incarcéré
voici son post tel qu'il l'a rédigé :

"Je définis une classe à l'aide d'un template dans un fichier ".h" et je
fais les déclarations dns un fichier ".cpp" en ajoutant le mot-clé "export"
devant chq m"thode comme prescrit dans le straistrup.


Je viens de relire, le Stroustrup en VF n'est pas très explicite sur
ce point. En fait, g++ ne sait pas gérer le mot export.

Le plus simple est de faire un #include du .cpp dans le .h...


Inclure un ".cpp" dans un header ... Hahem ...


Et, comment fais-tu toi avec des templates ?


Dans un fichier d'entête.




Avatar
Marc Boyer
Le 10-03-2006, TERENCE a écrit :

"Marc Boyer" a écrit dans le message de news:

"Marc Boyer" a écrit dans le message de news:
Je ne suis qu'intermediaire pour poser une question au profit d'un de mes
stagiaires actuellement incarcéré
voici son post tel qu'il l'a rédigé :

"Je définis une classe à l'aide d'un template dans un fichier ".h" et je
fais les déclarations dns un fichier ".cpp" en ajoutant le mot-clé "export"
devant chq m"thode comme prescrit dans le straistrup.


Je viens de relire, le Stroustrup en VF n'est pas très explicite sur
ce point. En fait, g++ ne sait pas gérer le mot export.

Le plus simple est de faire un #include du .cpp dans le .h...


Inclure un ".cpp" dans un header ... Hahem ...


Et, comment fais-tu toi avec des templates ?


Dans un fichier d'entête.


C'est à dire que tu mets tout le code dans le .h ?
Oses-tu dire sérieusement que c'est mieux ?

Mettre le #include du code dans le .h permet de
séparer dans deux fichiers interface et implémentation,
et le jour où on a un compilo avec export, il sera plus
simple de simplement enlever le #include du .h (un simple
grep...).

Après, si on utilise des règles implicites dans un truc
genre makefile, on peut préférer mettre les codes des
templates dans un .tpp et donc faire un #include du .tpp
dans le .h.

Marc Boyer


--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exiter des sots
IF -- Rudyard Kipling (Trad. Paul Éluard)





1 2 3