Я не уверен, что делать что-то в E32Dll (), даже если это работает (но это не так, как вы выяснили), является хорошим способом, потому что перед закрытием приложения вы должны показать пользователю какое-то уведомление или диалог,Почему бы не создать нормальную DLL + тонкий стартовый код, который будет загружать (используя RLibrary) и вызывать 1-ую порядковую функцию:
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
Привет, Haspemulator, Вот мой ответ на твой комментарий:
1) Нет, 1-й порядковый номер не E32Dll () , этот метод не может быть вызван начиная с EKA2.Проверьте приведенное ниже описание (http://developer.symbian.org/wiki/Symbian_OS_Internals/10._The_Loader):
Обратите внимание, что в EKA2 точка входа публичной DLL E32Dll (TDllReason) больше не вызывается. Эта функция должна присутствовать в каждой DLL EKA1, чтобывызываться, когда DLL присоединена или отсоединена от процесса или потока. К сожалению, эта система точек входа не может обеспечить никаких гарантий того, что E32Dll () будет вызываться с соответствующим параметром в указанное время. Поскольку невозможно поддерживатьЭта функция надежно устраняет поддержку EKA2, что упрощает архитектуру на стороне ядра для управления динамически загружаемым кодом, что повышает надежность и надежность.
2) Вы можете найти интересное обсуждение по этой теме.также здесь: http://discussion.forum.nokia.com/forum/showthread.php?80781-What-is-the-replacement-for-E32Dll-and-TDllReason
3) В нашем случае первый порядковый номер будет первой функцией, которую вы экспортируете из DLL.Вы можете найти информацию о том, как написать такую DLL здесь: http://developer.symbian.org/main/documentation/reference/s3/pdk/GUID-4A56B285-790E-5171-88F3-8C40B2AA9699.html
4) Чтобы быть более конкретным, что я имею в виду, экспортируя метод из DLL, проверьте код ниже (метод, конечно, может вернуть некоторую переменную -например, недавно созданный объект):
EXPORT_C void InitDll()
{
// Put here your code
}
Надеюсь, это поможет ... BR STEN