В обычной библиотеке DLL точки входа и функции, как правило, соотносятся 1:1. У меня есть DLL, которая имеет около 50 функций. Поддерживать их все муторно, и если сигнатуры или типы меняются, то их все нужно обновлять и так далее.
Я думал о том, чтобы создать 1 точку входа для них всех и отправить код, указывающий единственную точку входа, какую функцию вызывать в DLL. Может ли это вызвать какие-либо проблемы, такие как узкие места, особенно в потокобезопасной библиотеке DLL? Я не могу придумать никаких недостатков, так как этот подход будет имитировать запись COM и/или поиск в VTABLE или что-то подобное с одной точкой входа.
Например:
В обычной DLL могут быть экспортированы следующие три функции:
Func1
Func2
Func3
У всех разные точки входа
Предлагаемое решение:
Вызывающий вызывает Func1(iCode)
в DLL
Экспортированные Func1
в DLL отображают iCode
в Func2 или Func3 или Func4, ... Func50 и т.д.
Таким образом, нужно поддерживать только 1 подпись (с явной привязкой), а не 50. Я не могу предвидеть здесь никаких реальных узких мест. Я пропустил что-то очевидное?