Urk. I would recommend asking microsoft.public.vc.atl , as I think you will find more experts there. I think (although I'm not an expert) the problem is not with COM +, but with the problem of registered proxies / stubs. (In other words, even if you wrote your own COM client to access the component outside the process, you would probably run into the same problem). If you have standard Automation-compatible interfaces, then Windows knows how to marshal your objects just fine. But otherwise it is confusing.
Without a type library, you need to either register proxies / stubs, or you need to implement IMarshal yourself to handle custom marshaling. (or there is also this “marshaling handler”, which I don’t understand)
Your comment on why you don’t have a type library (implementation of an interface that is already defined by Microsoft, but one that does not have typelib) causes me a red flag. Can you provide more details? If this is something in .DLL or .EXE, but the type information is inside the library itself (and not the external .TLB file), you can probably extract the necessary information for everything to work, I'm just not familiar with the process.
(For the record, I left ATL / COM programming in favor of Java, so although I can tell you what I remember in the past, I don’t use tools now, and it will be difficult for me to return to them to provide additional help. But people on microsoft.public.vc.atl is pretty smart.)
Jason s
source share