# 'FMOD.CREATESOUNDEXINFO' cannot be marshaled

**URL:** <https://qa.fmod.com/t/fmod-createsoundexinfo-cannot-be-marshaled/12061>\
**Category:** Unity\
**Created:** [September 28, 2015, 11:07am UTC](https://qa.fmod.com/t/fmod-createsoundexinfo-cannot-be-marshaled/12061 "2015-09-28T11:07:31Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![sviudes](https://avatars.discourse-cdn.com/v4/letter/s/dec6dc/32.png) [@sviudes](https://qa.fmod.com/u/sviudes)\
**Post date:** [September 28, 2015, 11:07am UTC](https://qa.fmod.com/t/fmod-createsoundexinfo-cannot-be-marshaled/12061/1 "2015-09-28T11:07:31Z")

</div>

I’m using Unity plugin, and my code is working on PC. But when I run on iPhone, xCode gives me this error:

> ArgumentException: Type ‘FMOD.CREATESOUNDEXINFO’ cannot be marshaled  
> as an unmanaged structure; no meaningful size or offset can be  
> computed. at System.Runtime.InteropServices.Marshal.SizeOf  
> (System.Type t)

when I execute this code:

```
FMOD.CREATESOUNDEXINFO exinfo = new FMOD.CREATESOUNDEXINFO();
exinfo.cbsize = Marshal.SizeOf(exinfo);

```

am I doing anything wrong?

---

<div class="post-metadata">

**Author:** ![nick1](https://avatars.discourse-cdn.com/v4/letter/n/47e85d/32.png) [@nick1](https://qa.fmod.com/u/nick1)\
**Post date:** [September 29, 2015, 12:58am UTC](https://qa.fmod.com/t/fmod-createsoundexinfo-cannot-be-marshaled/12061/2 "2015-09-29T00:58:55Z")

</div>

> [@](#):
>
> I’m using Unity plugin, and my code is working on PC. But when I run on iPhone, xCode gives me this error:
> 
> > ArgumentException: Type ‘FMOD.CREATESOUNDEXINFO’ cannot be marshaled  
> > as an unmanaged structure; no meaningful size or offset can be  
> > computed. at System.Runtime.InteropServices.Marshal.SizeOf  
> > (System.Type t)
> 
> when I execute this code:
> 
> ```
> FMOD.CREATESOUNDEXINFO exinfo = new FMOD.CREATESOUNDEXINFO();
> exinfo.cbsize = Marshal.SizeOf(exinfo);
> 
> ```
> 
> am I doing anything wrong?

What version of Unity are you using?

---

<div class="post-metadata">

**Author:** ![sviudes](https://avatars.discourse-cdn.com/v4/letter/s/dec6dc/32.png) [@sviudes](https://qa.fmod.com/u/sviudes)\
**Post date:** [September 29, 2015, 6:47am UTC](https://qa.fmod.com/t/fmod-createsoundexinfo-cannot-be-marshaled/12061/3 "2015-09-29T06:47:09Z")

</div>

I’m using 1.06.10

---

<div class="post-metadata">

**Author:** ![nick1](https://avatars.discourse-cdn.com/v4/letter/n/47e85d/32.png) [@nick1](https://qa.fmod.com/u/nick1)\
**Post date:** [October 6, 2015, 5:32am UTC](https://qa.fmod.com/t/fmod-createsoundexinfo-cannot-be-marshaled/12061/4 "2015-10-06T05:32:30Z")

</div>

Until Unity fixes their IL2CPP system you can try replacing the createStream function with

```
[DllImport(VERSION.dll)]
private static extern RESULT FMOD5_System_CreateStream (IntPtr system, byte[] name_or_data, MODE mode, IntPtr exinfo, out IntPtr sound);

public RESULT createStream (string name, MODE mode, out Sound sound)
{			
	sound = null;
	
	byte[] stringData;
	stringData = Encoding.UTF8.GetBytes(name + Char.MinValue);
				
	IntPtr soundraw;
	RESULT result = FMOD5_System_CreateStream(rawPtr, stringData, mode, IntPtr.Zero, out soundraw);
	sound = new Sound(soundraw);
	
	return result;
}
```

---

<div class="post-metadata">

**Author:** ![sviudes](https://avatars.discourse-cdn.com/v4/letter/s/dec6dc/32.png) [@sviudes](https://qa.fmod.com/u/sviudes)\
**Post date:** [October 6, 2015, 1:37pm UTC](https://qa.fmod.com/t/fmod-createsoundexinfo-cannot-be-marshaled/12061/5 "2015-10-06T13:37:57Z")

</div>

> [@](#):
>
> Until Unity fixes their IL2CPP system you can try replacing the createStream function with
> 
> ```
> [DllImport(VERSION.dll)]
> private static extern RESULT FMOD5_System_CreateStream (IntPtr system, byte[] name_or_data, MODE mode, IntPtr exinfo, out IntPtr sound);
> 
> public RESULT createStream (string name, MODE mode, out Sound sound)
> {			
> sound = null;
> 	
> byte[] stringData;
> stringData = Encoding.UTF8.GetBytes(name + Char.MinValue);
> 				
> IntPtr soundraw;
> RESULT result = FMOD5_System_CreateStream(rawPtr, stringData, mode, IntPtr.Zero, out soundraw);
> sound = new Sound(soundraw);
> 	
> return result;
> }
> 
> ```

Thanks Nicholas, I’ll try it
