Pb d'importation d'une classe template à partir d'une DLL avec Visual Studio .NE

Résolu
cs_Diabolus Messages postés 61 Date d'inscription samedi 20 décembre 2003 Statut Membre Dernière intervention 28 septembre 2007 - 28 avril 2005 à 18:19
cs_Diabolus Messages postés 61 Date d'inscription samedi 20 décembre 2003 Statut Membre Dernière intervention 28 septembre 2007 - 28 avril 2005 à 21:12
Salut,
J'ai un problème d'importation à partir d'une DLL.
Je souhaite importer une classe qui est de type template dans mon application.
J'ai réussi à importer une fonction en C, mais je n'y arrive pas avec une classe template.

Voici mon code dans la DLL pour pouvoir l'exporter :

template <
typename T>
class
__declspec(
dllexport) maClasse{...};

et voici mon code dans mon application pour l'importer :


#using <mscorlib.dll>

...


using
namespace System::Runtime::InteropServices;


[DllImport("ChainedList/ChainedList.dll")]

class
__declspec(
dllimport) maClasse;

et ça ne marche pas car je n'indique pas qu'elle est de type template.

Je pensais mettre :

[DllImport("ChainedList/ChainedList.dll")]
template <typename T>
class
__declspec(
dllimport) maClasse;

mais ça ne compile pas.

Comment est ce que ça marche ?
Merci

2 réponses

cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
28 avril 2005 à 19:26
salut,

tu peux pas importer de template non spécialisée dans une DLL, tout
simplement parce que le code d'une classe template n'est généré que
quand il est utilisé (et il est impossible de generer un code si la
classe en parametre du template n'est pas connue; comment le compilo
pourrait gerer ca??). Importe le header dans ton projet, ca suffit ....



a+
3
cs_Diabolus Messages postés 61 Date d'inscription samedi 20 décembre 2003 Statut Membre Dernière intervention 28 septembre 2007 1
28 avril 2005 à 21:12
Merci beaucoup pour ta réponse aussi rapide.
Je ne peux pas mettre les fichiers headers car je passais par une DLL pour ne pas mettre le code. Mais je vais faire de mes classes template des classes utilisant des pointeurs sur void.
Merci beaucoup en tout cas.
0