我在我的应用程序中使用第三方组件,它作为COM组件分发,或者可以使用.manifest文件引用.无论哪种方式,它都使用CoCreateInstance()加载.第三方组件所需的文件位于子文件夹中.组件开发人员告诉我在可执行文件的Visual Studio 2010设置(在“清单”部分中)中包含.manifest文件,并且加载组件可以正常工作.
现在我只使用DLL中的第三方组件来封装第三方组件使用的功能.我正在使用LoadLibrary()动态加载DLL.使用该组件仍然有效,我可以使用由引用了清单文件的EXE加载的DLL中的组件.
为了进一步将EXE与第三个pary组件分开,我还想将清单移动到DLL,这里是组件使用的唯一位置.这样,我想编写的每个新EXE都可以使用DLL并间接使用这些功能.现在,我必须为每个新的EXE添加mainfest,但我不想这样做.
有没有办法将EXE使用的清单移动到DLL?
解决方法:
您可以将清单放在DLL中,但可能无法自动激活.您可能需要使用激活上下文API手动执行此操作.我认为很大程度上取决于清单的用途.我怀疑你正在尝试使用免注册COM,但这只是猜测.
无论如何,这些链接可能对您有用:
> RT_MANIFEST resource, and ISOLATION_AWARE_ENABLED (Junfeng Zhang)
> Isolating Components (MSDN)