我有一个用C#编写的COM dll,可以由免费注册的本机客户端成功使用。该dll包含一个COM类,该类具有用ComSourcesInterface
装饰的事件。使用Delphi和VB6,我可以通过对象浏览器看到该类具有事件。
但是,当未注册dll时事件不会触发(所有其他API均按预期工作)。
有人在不注册tlb的情况下有任何建议使活动正常进行吗?
我知道它如何使用C ++对普通COM起作用。 IDK(如果.NET对事件进行特殊处理)。我很惊讶它不会在清单中为您的.NET DLL定义。您是否声明了事件接口并将其显示为COM?
对于“普通” COM事件,您需要在清单中的事件接口(通常是我的经验中的Dispinterface)条目。通常,它将是一个条目,例如:
<comInterfaceExternalProxyStub name="YourEvents" iid="{abcdef12-3d45-11d4-9ff4-00c04fa0d540}" tlbid="{abcdef12-3d45-11d4-9ff4-00c04fa0d540}" proxyStubClsid32="{00020420-0000-0000-c000-000000000046}" />
替换名称,iid和tlbid以匹配您的界面。希望对您有所帮助。