【发布时间】:2017-10-05 20:41:11
【问题描述】:
所以我有一个接口 (IInterface1) 公开为 ComVisible(true)、ClassInterfaceType(ClassInterfaceType.None)。
我在那个接口上有一个对象,唉:
public interface IInterface1
{
Object1 object {get; set;}
}
对象一也是 ComVisible(true),在一个单独的程序集中,ClassInterfaceType(ClassInterfaceType.None),看起来像这样:
public interface IObject1
{
string MyProperty {get;set;}
}
在 C# 中,我仍然有以下类:
public class Interface1 : IInterface1
{
public IObject1 Object1 {get;set;}
}
如何从非托管 C++ 访问 Interface1.Object1.MyProperty?我正在导入 TLH raw_interfaces_only,可以 CreateInstance 我的 Interface1 类,并访问 Object1。如果我尝试访问 Object1 上的 MyProperty,我会收到“不允许指向不完整类类型的指针”。
c++ 代码如下:
Assembly1::Interface1Ptr interface1ptr;
HRESULT hrRetval = CoInitialize(NULL);
hrRetval = interface1ptr.CreateInstance(__uuidof(Assembly1::Interface1));
Assembly1::Object1 *object1;
hrRetval = interface1ptr.get_Object1(&object1);
这是我卡住的地方:
hrRetval = object1->get_MyProperty(varToStore); // This doesn't work.
欣赏任何指针(har har)。
【问题讨论】:
标签: c# c++ com com-interop