|
2
|
| Hannes de Jager Ruben · 技术社区 · 17 年前 |
|
|
1
1
这个问题有两个方面。 首先,通过仅将这些类添加到COM+应用程序中,手动控制通过COM+公开的类。不包括的类将在proc中实例化,由于32位/64位不兼容,此实例化将失败。 然后是编组。为了给使用者一个新创建对象的接口指针,COM+需要知道如何封送该接口。除非您自己实现编组,否则将使用默认编组。只有在满足以下要求时,默认编组才会起作用:COM服务器包含一个类型库,接口包含在该类型库中,并且接口与自动化完全兼容。后者大致意味着该接口的方法中没有一个具有自定义类型的参数,例如structs(接口是可以的)。如果不满足这些要求,当使用者调用CoCreateInstance()或IUnknown::QueryInterface()时,COM+将返回E_NOINTERFACE。见类似问题: What is required to enable marshaling for a COM interface? 您基本上有三种选择:不查询违反规则的接口、实现自定义编组(我目前不知道从哪里开始),或者引入一个新的中间接口,该接口将与自动化兼容。 |