0

i am using SharpDx.dll & SharpDx.XAudio2.dll in Unity3D.

The dll works fine in the editor. However, when I run the program after building Windows, an error occurs in the initialization part. The error log is as follows and a part of the source code is attached.

Doesn't that dll work on windows base? If not, is there any workaround?

    using UnityEngine;
    using SharpDX.Multimedia;
    using SharpDX.XAudio2;
    using System.IO;
    using System;
    
    XAudio2 xaudio2;
    MasteringVoice masteringVoice;
    
    void Start()
    {
       xaudio2 = new XAudio2(); << Error
       masteringVoice = new MasteringVoice(xaudio2);
    }


NotSupportedException: To marshal a managed method, please add an attribute named 'MonoPInvokeCallback' to the method definition. The method we're attempting to marshal is: SharpDX.XAudio2.EngineShadow+EngineVtbl::OnProcessingPassStartImpl
  at System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate (System.Delegate d) [0x00000] in <00000000000000000000000000000000>:0 
  at SharpDX.CppObjectVtbl.AddMethod (System.Delegate method) [0x00000] in <00000000000000000000000000000000>:0 
  at SharpDX.XAudio2.EngineShadow+EngineVtbl..ctor () [0x00000] in <00000000000000000000000000000000>:0 
  at SharpDX.XAudio2.EngineShadow..cctor () [0x00000] in <00000000000000000000000000000000>:0 
  at SharpDX.XAudio2.XAudio2..ctor (SharpDX.XAudio2.XAudio2Flags flags, SharpDX.XAudio2.ProcessorSpecifier processorSpecifier, SharpDX.XAudio2.XAudio2Version requestedVersion) [0x00000] in <00000000000000000000000000000000>:0 
  at SharpDX.XAudio2.XAudio2..ctor (SharpDX.XAudio2.XAudio2Version requestedVersion) [0x00000] in <00000000000000000000000000000000>:0 
  at SharpDX.XAudio2.XAudio2..ctor () [0x00000] in <00000000000000000000000000000000>:0 
  at DirectWav.Start () [0x00002] in C:\Develop\WJMAX\Assets\Scripts\Common\DirectWav.cs:23 
Rethrow as TypeInitializationException: The type initializer for 'SharpDX.XAudio2.EngineShadow' threw an exception.
  at SharpDX.XAudio2.XAudio2..ctor (SharpDX.XAudio2.XAudio2Flags flags, SharpDX.XAudio2.ProcessorSpecifier processorSpecifier, SharpDX.XAudio2.XAudio2Version requestedVersion) [0x00000] in <00000000000000000000000000000000>:0 
  at SharpDX.XAudio2.XAudio2..ctor (SharpDX.XAudio2.XAudio2Version requestedVersion) [0x00000] in <00000000000000000000000000000000>:0 
  at SharpDX.XAudio2.XAudio2..ctor () [0x00000] in <00000000000000000000000000000000>:0 
  at DirectWav.Start () [0x00002] in C:\Develop\WJMAX\Assets\Scripts\Common\DirectWav.cs:23 

Simon Mourier
  • 132,049
  • 21
  • 248
  • 298
MOGI
  • 21
  • 5
  • A simple google search brought me this result: https://forum.unity.com/threads/il2cpp-does-not-support-marshaling-delegates-that-point-to-instance-methods-to-native-code.1046143/ – TheNomad Feb 23 '23 at 18:45

0 Answers0