1

我很抱歉,但我不得不再问一次。我从数周和数月以来一直在寻找解决方案。问题是仅通过调用几个方法 InvalidCast Exception E_NOINTERFACE 实现了一个 COM 接口,它告诉我必须实现 IUnknown。那么我该怎么做呢?

我几乎尝试了一切......目前我有这样的东西

[ComImport,
 Guid("279AFA85-4981-11CE-A521-0020AF0BE560"),
 InterfaceType(ComInterfaceType.InterfaceIsIUnknown),
 System.Security.SuppressUnmanagedCodeSecurity]

public interface IDirectSoundBuffer : IUnknown
{

...

[ComImport]
[Guid("00000000-0000-0000-C000-000000000046")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IUnknown
{
    void QueryInterface([In] ref Guid giid, [Out, MarshalAs(UnmanagedType.IUnknown, IidParameterIndex = 0)] out object ppvObject);
    [PreserveSig]
    uint AddRef();
    [PreserveSig]
    uint Release();
}

我真的不知道我还能尝试更多。我在许多不同的论坛上都有一个讨论这个话题的话题,但 noboboy 什么都知道 :(( 请帮助我。

4

1 回答 1

0

这只是一个猜测(因为它已经有一段时间了):

不要IUnkown在 C# 互操作代码中声明和继承您的接口。Com Callable Wrapper将为您实现它。

于 2012-07-13T21:35:24.477 回答