J'ai deux DLL COM. Les deux implémentent ATL :: CAtlDllModuleT <>. D'après ce que je comprends, cette classe fait le sale boulot d'enregistrer et de désinscrire les objets COM. Y a-t-il un moyen de fusionner ces deux en un?ATL & COM - Plusieurs serveurs, un binaire?
class CFoo : public ATL::CAtlDllModuleT<CFoo>
{
public :
DECLARE_LIBID(LIBID_FooLib)
DECLARE_REGISTRY_APPID_RESOURCEID(IDR_FOOINTERFACE, "{4E6823F7-230B-4D6C-9195-571B94B32859}")
};
Les deux projets que j'ai, l'un est le DLL et l'autre est le LIB (qui est lié).
C'est tout? Cela semble un peu trop facile pour COM. – MarkP
Oh, je suis sûr qu'il y aura un autre enfer pour aider à équilibrer cette apparence facile. Mais c'est de mon expérience. –
+1 @ user318811: Cela devrait suffire - vous utilisez simplement cette macro (ou une autre équivalente) pour dire à ATL "Je veux exposer cette classe à l'enregistrement" et si vous avez une typelib, vous devez également le mentionner. Ces macros remplissent une carte globale de choses qui doivent être enregistrées lorsque 'DllRegisterServer()' est appelé. Peut-être que quelque chose va se casser, mais ATL est livré avec des sources, de sorte que vous pouvez déboguer ces problèmes assez facilement. – sharptooth