Si verificano problemi nell'utilizzo di un public enum
definito in C# all'interno di un'interfaccia C++. Il progetto .NET è esposto a COM per essere utilizzato all'interno del software legacy C++ e VB.C# Enum in una libreria C++
C# Codice:
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++ Codice:
Edit: Nel IDL per il progetto ho importato il 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);
}
In MethodTwo
, continuo a ricevere errori affermando
Tipo Eccetto Specification vicino TestEnum
Sto assumendo che c'è qualcosa che non sto facendo correttamente. MethodOne
sembra trovare il riferimento correttamente.
C'è un po 'di magia nel fare riferimento all'oggetto enum .NET nell'interfaccia C++?
Grazie Hans. Ha funzionato perfettamente! –