Мне удалось прийти к хитрой альтернативе Майка Б. № 2 (или № 3, если учесть исходное предложение) после того, как я немного подумал над этим вопросом.
Это мой любимый из трех для моего конкретного случая , потому что, кажется, он требует наименьшего объема работы и, вероятно, может быть наиболее очевидным для расшифровки кому-то новому, глядя на код. Я считаю, что могу просто выполнить следующие шаги и начать работу:
- используйте магию регулярных выражений и найдите / замените, чтобы превратить файлы заголовков с вызовами функций, которые у меня есть, в файл заголовка оболочки и файл реализации оболочки. (где каждый метод в dll-оболочке отличается каким-то общим новым элементом для имени, что экономит мне время на необходимость разрешения конфликтов). Таким образом, FunctionCall () становится WrapperOneFunctionCall () и WrapperTwoFunctionCall () в каждой соответствующей dll-оболочке.
- связывает dll-оболочку с соответствующей базовой dll.
- связывает мой исполняемый файл с dll-оболочкой, удаляет ссылки на базовые dll, но по-прежнему включает определения констант, enum и struct, которые не нужно разрешать из базовой dll (поскольку мои функции-оболочки по-прежнему принимают один и тот же параметр типы)
Если кто-то еще читает эту ветку, мой следующий вопрос будет: «Что-то не так с этим решением?»
Спасибо респондентам за помощь.