Я использую сторонний компонент в своем приложении, который распространяется либо как компонент COM, либо на него можно ссылаться с помощью файла .manifest. В любом случае он загружается с помощью CoCreateInstance (). Файлы, необходимые для стороннего компонента, находятся в подпапке. Разработчик компонента сказал мне включить файл .manifest в настройки Visual Studio 2010 (в разделе «Манифест») исполняемого файла, и загрузка компонента работает без проблем.
Теперь я использую сторонний компонент только из DLL, чтобы инкапсулировать функции, используемые сторонним компонентом. Я загружаю DLL динамически, используя LoadLibrary (). Использование компонента все еще работает, я могу использовать компонент из библиотеки DLL, которая загружается EXE-файлом, на который ссылается файл манифеста.
Чтобы еще больше отделить EXE-файл от третьего компонента pary, я бы тоже хотел переместить манифест в DLL, где это единственное место, где используется компонент. Таким образом, каждый новый EXE-файл, который я хотел бы написать, может использовать DLL и косвенно использовать функции. Сейчас я должен добавить mainfest для каждого нового EXE-файла, но я не хочу этого делать.
Есть ли способ переместить манифест, используемый EXE-файла в DLL?
Вы можете поместить манифест в DLL, но он не может быть активирован автоматически. Возможно, вам придется сделать это вручную, используя контекстный API активации. Я думаю, что многое зависит от того, для чего используется манифест. Я подозреваю, что вы пытаетесь использовать бесплатную регистрацию COM, но это только предположение.
В любом случае, эти ссылки могут быть полезны для вас:
Других решений пока нет …