У меня есть две библиотеки DLL, Core
а также Extension
, Extension
неявно ссылки Core
(используя Core.lib). Extension
предназначен для того, чтобы быть плагином (явно связанным) в исполняемый файл, который также неявно связывает Core
,
Core
объявляет функцию, которая экспортируется в Core.dll (extern "C" __declspec(dllexport) int GetCoreVersion()
), который я также хотел бы экспортировать в Extension.dll.
Цель состоит в том, чтобы сравнить версии — я хочу убедиться, что плагин (расширение) был связан с той же версией Core.dll, что и исполняемый файл. Эта проверка будет выполняться в исполняемом файле, поскольку она явно связывает Extension.dll (через LoadLibrary
а также GetProcAddress
). Есть ли способ лучше?
Я добавил следующее в расширение, которое вызывает GetCoreVersion
символ для экспорта:
#pragma comment(linker, "/export:_GetCoreVersion");
Исполняемый файл теперь может найти функцию (через GetProcAddress("GetCoreVersion")
).
Других решений пока нет …