我在使用一个在C#中定义的public enum
时,在C++接口中遇到了问题。该.NET项目已经暴露给COM,以供C++和VB的遗留软件使用。
C#代码:
namespace ACME.XXX.XXX.XXX.Interfaces.Object
{
[Guid(".....")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
[ComVisible(true)]
public interface TestInterface
{
void Stub();
}
[ComVisible(true)]
public enum TestEnum
{
a = 1,
b = 2
}
}
C++代码:
编辑:在项目的idl中,我导入了tlb。(importlib("\..\ACME.XXX.XXX.XXX.Interfaces.tlb")
)
interface ITestObject : IDispatch
{
[id(1), helpstring("one")]
HRESULT MethodOne([in] TestInterface *a);
[id(2), helpstring("two")]
HRESULT MethodTwo([in] TestEnum a);
}
在MethodTwo
中,我一直收到错误提示:
TestEnum附近的类型规范除外
我想这里可能有些地方我没有做正确。而MethodOne
似乎已经正确地找到了引用。
在C++接口中引用.NET枚举对象是否有什么魔法?