Je ne suis pas sûr que faire quelque chose dans E32Dll() même si cela fonctionne (mais il ne fonctionne pas comme vous le comprendre) est un bon moyen, car avant de fermer l'application, vous devez afficher une notification ou un dialogue utilisateur. Pourquoi ne pas faire une DLL normale + mince du code de démarrage, qui charge (en utilisant le RLibrary) et appeler la 1ère fonction ordinale:
RLibrary library;
//UID
TUidType uidType(TUid::Uid(KDynamicLibraryUidValue),
TUid::Uid(KMyInterfaceUid),
TUid::Uid(KMyImplementationUid));
// Open dll
User::LeaveIfError(library.Load(KMyDll, uidType));
// Check the exported method
TLibraryFunction ordinal1 = aLibrary.Lookup(1);
// Call the method...
if (ordinal1)
ordinal1();
library.Close();
BR Sten
Salut Haspemulator, Il est ma réponse à votre commentaire:
1) non, le 1er ordinale n'est pas E32Dll(), cette méthode ne peut pas être appelé depuis EKA2. Vérifiez la description ci-dessous (http://developer.symbian.org/wiki/Symbian_OS_Internals/10._The_Loader):
Notez que, dans EKA2, le point d'entrée DLL public, E32Dll (TDllReason) n'est plus appelé. Cette fonction doit être présente dans chaque DLL EKA1, pour être appelée lorsque la DLL est attachée ou détachée d'un processus ou d'un thread. Malheureusement, ce système de point d'entrée ne peut fournir aucune garantie que E32Dll() sera appelé avec le paramètre approprié à l'heure spécifiée. Parce qu'il n'est pas possible de supporter cette fonctionnalité de manière fiable, EKA2 supprime son support. Cette suppression simplifie l'architecture du noyau pour la gestion du code chargé dynamiquement, ce qui améliore la fiabilité et la robustesse.
2) Vous pouvez trouver une discussion intéressante au sujet de ce sujet aussi ici: http://discussion.forum.nokia.com/forum/showthread.php?80781-What-is-the-replacement-for-E32Dll-and-TDllReason
3) Dans notre cas, le 1er ordinale sera la 1ère fonction vous exporter à partir de la DLL. Vous pouvez trouver des informations comment écrire une telle DLL ici: http://developer.symbian.org/main/documentation/reference/s3/pdk/GUID-4A56B285-790E-5171-88F3-8C40B2AA9699.html
4) Pour être plus concret ce que je veux dire en exportant une méthode de DLL, vérifiez le code ci-dessous (la méthode peut bien sûr retourner une variable - par exemple nouvellement créé objet):
EXPORT_C void InitDll()
{
// Put here your code
}
Espérons que cela aide ... BR Sten
La première fonction ordinale est-elle toujours E32Dll()? – Haspemulator
Salut, j'ai mis mon commentaire en réponse originale, puisque le commentaire a limité l'espace ... BR – STeN