Я не уверен, что делать что-то в 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();
БР СТЭН
Привет, 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) В нашем случае 1-й порядковый номер будет 1-й функцией, которую вы экспортируете из 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
person
STeN
schedule
23.10.2010