Je rencontre des problèmes (c'est-à-dire, des erreurs de liaison) avec l'instanciation explicite d'un modèle de fonction. Sous Visual Studio, les liens du projet sont ok, seulement sous g ++/Unix, en utilisant Eclipse-CDT, le lien produit des erreurs.L'instanciation explicite du modèle de fonction échoue (g ++)
L'appel de fonction fait partie d'une bibliothèque statique liée à une bibliothèque dynamique dans un grand projet. L'architecture de la fonction est la suivante:
-
modèle de fonction
- déclarée (mais non mis en œuvre) à l'intérieur d'un espace de noms dans mon dossier
MathUtils.h
. L'un des arguments de la fonction est lui-même un struct template, qui est déclaré et implémenté dans ce fichierh
(sous le même espace de noms). - la mise en œuvre de la fonction et l'instanciation est dans
MathUtils.cpp
. - l'appel de la fonction est dans
someFile.cpp
(qui bien sûr#include "MathUtils.h"
) qui est compilé & lié comme une partie d'une bibliothèque statique.
Ce qui me pousse (presque) fou, est que les erreurs de construction ne sont pas totalement reproductibles, et je soupçonne l'Eclipse est à blâmer (sauter peut-être quelques étapes, bien que je l'utilise clean project
avant chaque construction).
Pendant environ une heure, la configuration de débogage a été créée sans erreurs, mais la version a échoué avec l'erreur de liaison undefined reference to...
. Ensuite, pendant l'heure suivante, les deux configurations ont échoué. Ensuite, j'ai fait un petit projet, avec seulement les 3 fichiers mentionnés ci-dessus, et compilé à la fois depuis la ligne de commande et depuis Eclipse - pas d'erreur du tout. Maintenant Les deux configurations semblent lier ok.
Est-ce que quelqu'un a rencontré des problèmes similaires en utilisant l'Eclipse-CDT? Aucune suggestion?
EDIT: comme le problème n'est pas facilement (ou pas du tout) reproductible, je suppose qu'il sera difficile d'obtenir une réponse. Je vais mettre à jour si j'ai de nouvelles idées.
Ce n'est pas vrai, cherchez 'instantiation' explicite. –
Mon erreur - J'ai mal interprété les modèles de fonction pour les modèles de classe. – stackmate
Ne citez pas cplusplus.com. Sérieusement. – Griwes