Всем привет! Такой вопрос: http://msdn.microsoft.com/en-us/library/zxk0tw93%28v=vs.71%29.aspx здесь написано, что для всех winapi функций используется stdcall, но в peinfo user32.dll выглядит так, как будто там всё cdecl (нет @ и количества освобождаемых байтиков). Тоже самое наблюдается с кучей системных библиотек из папки system32 включая kernel32.dll и ntdll.dll. Думал раньше, что это из-за 64 битной версии. Но посмотрел на 32 битной - там то же самое - декораторов нет. Может я чего-то не понимаю? Объясните пожалуйста этот пункт. И ещё одни вопрос: допустим я делаю dll. Какой call convention мне использовать stdcall или cdecl? Как принято его выбирать? Спасибо.
для большинства WinAPI используется stdcall для 32-битный операционных систем и fastcall для 64-битных операционных систем... кроме тех функций, которые призваны "повторять" posix стандарт, они в большинстве своем cdecl... имя экспортируемой в dll функции может и не иметь никаких декораторов, это задается в def-файле при сборке библиотеки и в соответствующем этой библиотеки lib-файле... какой тебе удобнее, такой и используй...