directx bindings problem
Heinz
thor587 at yahoo.com
Tue Oct 29 13:26:26 PDT 2013
On Tuesday, 29 October 2013 at 19:40:40 UTC, Benjamin Thaut wrote:
> So I found it. Its actually your fault.
>
> IXAudio2Voice isn't a COM interface. That means it should _not_
> inherit from IUnkown. But if it isn't a COM interface it can't
> be a regular D interface either, because if it is a regular
> D-Interface it will not have a v-table layout that conforms
> with C++. That means you have to put "extern(C++)" in front of
> IXAudio2Voice to make it work.
>
> So to make stuff work you should change
>
> interface IXAudio2Voice : IUnknown
>
> to
>
> extern(C++) interface IXAudio2Voice
>
> Then everything works fine.
>
> Tip for the future: Using the "Microsoft Symbol Server" and the
> Visual Studio Debugger you can easily verify if your COM
> interfaces call the correct methods or if you messed up the
> declarations.
>
> Kind Regards
> Benjamin Thaut
Whoa! This did the trick with XAudio2! Thank you very much. I'll
have the C++ linkage in mind for the rest of the DirectX APIs.
One question: Should the other interfaces like IXAudio2 for
example use extern(C++) whether they are COM interfaces or not?
I'll also take your tip. I got the link for the symbol server. Do
you have a link for a tutorial or something for the Visual Studio
Debugger? I'd like more info about it. I assume the debug
information from DMD is compatible with this debugger, right?
Thank you again for your help and time.
More information about the Digitalmars-d-learn
mailing list