> Вот содержание обычного файла def: > > LIBRARY "DLL" > DESCRIPTION 'DLL Windows Dynamic Link Library' > > EXPORTS > ActivateKeyboardLayout @1 > AdjustWindowRect @2 > AdjustWindowRectEx @3 > AlignRects @4 > AllowForegroundActivation @5 > > А теперь вопрос зачем нужны @1, @2, @3 и т. д. . Что они > делают? И как изменяется DLL если их нет? В конце концов > можно просто написать: > > LIBRARY "DLL" > DESCRIPTION 'DLL Windows Dynamic Link Library' > > EXPORTS > ActivateKeyboardLayout > AdjustWindowRect > AdjustWindowRectEx > AlignRects > AllowForegroundActivation
А нифига, по-моему, и не поменяется. Я С++ не изучал (юзаю Паскаль ака Delphi), но это очень похоже на индексы экспортируемых процедур. Смысл в том, что ты процедуру (или функцию) можешь из DLL вызывать не только по имени, но и по индексу (номеру), который ей присвоен программером, который ее писал. И этот самый индекс присваивать процедуре совсем необязательно.
> > Вот содержание обычного файла def: > >ActivateKeyboardLayout @1 > Только надо бы _ActivateKeyboardLayout @1 > > > А теперь вопрос зачем нужны @1, @2, @3 и т. д. > Это количество байт передаваемых в параметрах. > > А вообще это извращение. Т.к. у тебя и будут > экспортироваться функции с такими именами.
Не знаю ну помойму эта номера функций, а не количество принимаймых параметров. Взглини ссылку:
http://louhi.kempele.fi/~skyostil/store/code/4k/asm2001/USER32.DEF там номера увеличиваются последовательно. Следующая функция принимает 2 параметра, а для нее указаео @1.
HKL ActivateKeyboardLayout(HKL hkl, UINT Flags);
и функция mouse_event насколько я знаю не принимает 644 параметра.
[C++] Очень глупый ответ про DLL !14.09.02 17:48 Автор: J'JF <Dmytro Volhushyn> Статус: Elderman
> Вот содержание обычного файла def: > > LIBRARY "DLL" > DESCRIPTION 'DLL Windows Dynamic Link Library' > > EXPORTS > ActivateKeyboardLayout @1 > AdjustWindowRect @2 > AdjustWindowRectEx @3 > AlignRects @4 > AllowForegroundActivation @5 > > А теперь вопрос зачем нужны @1, @2, @3 и т. д. . Что они > делают? И как изменяется DLL если их нет? В конце концов > можно просто написать: > > LIBRARY "DLL" > DESCRIPTION 'DLL Windows Dynamic Link Library' > > EXPORTS > ActivateKeyboardLayout > AdjustWindowRect > AdjustWindowRectEx > AlignRects > AllowForegroundActivation
А нифига, по-моему, и не поменяется. Я С++ не изучал (юзаю Паскаль ака Delphi), но это очень похоже на индексы экспортируемых процедур. Смысл в том, что ты процедуру (или функцию) можешь из DLL вызывать не только по имени, но и по индексу (номеру), который ей присвоен программером, который ее писал. И этот самый индекс присваивать процедуре совсем необязательно.