Экспорт порядкового номера без файла определения

Мы можем экспортировать порядковый номер, используя def file. Но системные dll не используют файлы def. Тем не менее, shell32.dll имеет 569 порядковых экспортов, а user32.dll имеет 181 порядковый экспорт.

Есть ли способ экспортировать порядковый номер без файла определения?

1

Решение

каждый Экспортируемая функция имеет порядковый номер. Компоновщик автоматически нумерует их, он начинается с 1. Но если вы хотите контролировать точный значение (как Microsoft имеет отношение к этим DLL), то вы должен используйте файл .def.

Требуется только в том случае, если клиентский код использовал порядковые номера раньше, а также вам требуется двоичная совместимость со старым кодом, который не перестраивается, а также Вы добавили или удалили экспортированные функции. С точностью до 99,99% клиентский код никогда не использует порядковые номера для связи экспортируемой функции. Вместо этого они всегда используют имя. У вас будет зависимость только от порядкового значения, если вы экспортируете функцию с атрибутом NONAME в файле .def, заставляя код клиента использовать порядковый номер. На практике это делается только тогда, когда вы хотите скрыть экспорт.

Microsoft никогда не может делать какие-либо предположения по этому поводу и была вынуждена поддерживать совместимость двоичных файлов этих DLL в течение последних 23 лет. Бремя, которое не наше.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]