【发布时间】:2016-07-10 22:09:24
【问题描述】:
我在 C++ 接口中使用 C# 中定义的 public enum 时遇到问题。 .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 枚举对象有什么魔力吗?
【问题讨论】: