Bon je suis pas sur d´avoir compris . .. mais voilà quelquechose qui j´espère pourra t´aider un peu.
Tout d´abord exporter une classe est tout à fait possible. Si tu veux exemple, tu fais nouveau projet dans VC++, tu choisis DLL > puis dans la dialog qui apparait > " DLL that exports some symbols" ( ou qqchose comme ca). Le seul hic c´est que le programme client doit être linké avec le fichier . lib généré en compilant la DLL.
Autre solution tu construis un système de session au niveau de ta DLL : Init + Release.
Lors de l´init tu obtiens ( au niveau du programme client de la DLL) un ID qui te permet de t´idenfitier lors des appels suivants. Et lors du Release tu libères cet ID. Exemple :
côté DLL :
en fonction de l´ID tu peux allouer une série de variables / classes qui seront accessibles si le programme client fournit le bon ID ( l´ID peut correspondre par exemple à une adresse du côté de la DLL vers une classe contenant les données d´une session etc...)
. . Init(typeID _*pID)
{
. ..
/ / allouer un nouvel ID
_*pID = NouvelID;
}
. . Release(typeID _ID)
{
/ / libérer la session identifiée par _ID
}
. . Fonction1(typeID _ID . ..)
{
/ / Traitement 1 lié au contexte _ID
}
. . Fonction2(typeID _ID . ..)
{
/ / Traitement 2 lié au contexte _ID
}
côté client :
typeID monID;
Init(&);
Fonction1(monID, . ..);
Fonction2(monID, . ..);
Release(monID);