[Solved]Adding additional include path lead to IDE crash

General help: new users, installing the Ecere SDK, using the IDE to compile and run applications.
samsam598
Posts: 212
Joined: Thu Apr 14, 2011 9:44 pm

[Solved]Adding additional include path lead to IDE crash

Post by samsam598 »

Greetings!

I tried to compile sample piano in samples/audio/piano but I got a lot of errors:

Code: Select all

Default Compiler
Building project Piano using the Debug configuration...
Compiling...
Piano.ec
   Piano.ec:4:1: error: Couldn't open obj/debug.win32\EcereAudio.sym
   Piano.ec:4:1: error: Couldn't open obj/debug.win32\EcereAudio.sym
   Piano.ec:27:10: warning: incompatible expression this.mixer (Mixer); expected ecere::com::Instance
   Piano.ec:28:10: warning: incompatible expression this.ding (Sound); expected ecere::com::Instance
   Piano.ec:29:10: warning: incompatible expression this.chord (Sound); expected ecere::com::Instance
   Piano.ec:19:4: error: couldn't find member text in class MainWindow
   Piano.ec:0:0: error: couldn't determine type of this.text
   Piano.ec:0:0: error: couldn't determine type of this.text
   Piano.ec:0:0: error: couldn't determine type of this.text = "A keyboard piano"
   Piano.ec:20:4: error: couldn't find member background in class MainWindow
   Piano.ec:0:0: error: couldn't determine type of this.background
   Piano.ec:20:17: error: unresolved identifier black
   Piano.ec:0:0: error: couldn't determine type of this.background
   Piano.ec:0:0: error: couldn't determine type of black
   Piano.ec:0:0: error: couldn't determine type of this.background = black
   Piano.ec:21:4: error: couldn't find member borderStyle in class MainWindow
   Piano.ec:0:0: error: couldn't determine type of this.borderStyle
   Piano.ec:21:18: error: unresolved identifier sizable
   Piano.ec:0:0: error: couldn't determine type of this.borderStyle
   Piano.ec:0:0: error: couldn't determine type of sizable
   Piano.ec:0:0: error: couldn't determine type of this.borderStyle = sizable
   Piano.ec:22:4: error: couldn't find member hasMaximize in class MainWindow
   Piano.ec:0:0: error: couldn't determine type of this.hasMaximize
   Piano.ec:22:18: error: unresolved identifier true
   Piano.ec:0:0: error: couldn't determine type of this.hasMaximize
   Piano.ec:0:0: error: couldn't determine type of true
   Piano.ec:0:0: error: couldn't determine type of this.hasMaximize = true
   Piano.ec:23:4: error: couldn't find member hasMinimize in class MainWindow
   Piano.ec:0:0: error: couldn't determine type of this.hasMinimize
   Piano.ec:23:18: error: unresolved identifier true
   Piano.ec:0:0: error: couldn't determine type of this.hasMinimize
   Piano.ec:0:0: error: couldn't determine type of true
   Piano.ec:0:0: error: couldn't determine type of this.hasMinimize = true
   Piano.ec:24:4: error: couldn't find member hasClose in class MainWindow
   Piano.ec:0:0: error: couldn't determine type of this.hasClose
   Piano.ec:24:15: error: unresolved identifier true
   Piano.ec:0:0: error: couldn't determine type of this.hasClose
   Piano.ec:0:0: error: couldn't determine type of true
   Piano.ec:0:0: error: couldn't determine type of this.hasClose = true
   Piano.ec:25:4: error: couldn't find member size in class MainWindow
   Piano.ec:0:0: error: couldn't determine type of this.size
   Piano.ec:25:11: error: couldn't determine type of  { 576, 432 }
   Piano.ec:0:0: error: couldn't determine type of this.size
   Piano.ec:0:0: error: couldn't determine type of  { 576, 432 }
   Piano.ec:0:0: error: couldn't determine type of this.size =  { 576, 432 }
   Piano.ec:36:7: error: undefined class Mixer
   Piano.ec:36:7: error: couldn't determine type of this.mixer.systemHandle
   Piano.ec:36:28: error: unresolved identifier systemHandle
   Piano.ec:36:7: error: couldn't determine type of this.mixer.systemHandle
   Piano.ec:36:7: error: couldn't determine type of systemHandle
   Piano.ec:36:7: error: couldn't determine type of this.mixer.systemHandle = systemHandle
   Piano.ec:49:14: error: unresolved identifier f1; expected Key
   Piano.ec:50:14: error: unresolved identifier f2; expected Key
   Piano.ec:53:14: error: unresolved identifier z; expected Key
   Piano.ec:53:18: error: undefined class Mixer
   Piano.ec:54:14: error: unresolved identifier x; expected Key
   Piano.ec:54:18: error: undefined class Mixer
   Piano.ec:55:14: error: unresolved identifier c; expected Key
   Piano.ec:55:18: error: undefined class Mixer
   Piano.ec:56:14: error: unresolved identifier v; expected Key
   Piano.ec:56:18: error: undefined class Mixer
   Piano.ec:57:14: error: unresolved identifier b; expected Key
   Piano.ec:57:18: error: undefined class Mixer
   Piano.ec:58:14: error: unresolved identifier n; expected Key
   Piano.ec:58:18: error: undefined class Mixer
   Piano.ec:59:14: error: unresolved identifier m; expected Key
   Piano.ec:59:18: error: undefined class Mixer
   Piano.ec:60:14: error: unresolved identifier comma; expected Key
   Piano.ec:60:22: error: undefined class Mixer
   Piano.ec:61:14: error: unresolved identifier period; expected Key
   Piano.ec:61:22: error: undefined class Mixer
   Piano.ec:62:14: error: unresolved identifier slash; expected Key
   Piano.ec:62:22: error: undefined class Mixer
   Piano.ec:63:14: error: unresolved identifier s; expected Key
   Piano.ec:63:18: error: undefined class Mixer
   Piano.ec:64:14: error: unresolved identifier d; expected Key
   Piano.ec:64:18: error: undefined class Mixer
   Piano.ec:65:14: error: unresolved identifier g; expected Key
   Piano.ec:65:18: error: undefined class Mixer
   Piano.ec:66:14: error: unresolved identifier h; expected Key
   Piano.ec:66:18: error: undefined class Mixer
   Piano.ec:67:14: error: unresolved identifier j; expected Key
   Piano.ec:67:18: error: undefined class Mixer
   Piano.ec:68:14: error: unresolved identifier l; expected Key
   Piano.ec:68:18: error: undefined class Mixer
   Piano.ec:69:14: error: unresolved identifier colon; expected Key
   Piano.ec:69:22: error: undefined class Mixer
   Piano.ec:72:14: error: unresolved identifier q; expected Key
   Piano.ec:72:18: error: undefined class Mixer
   Piano.ec:73:14: error: unresolved identifier w; expected Key
   Piano.ec:73:18: error: undefined class Mixer
   Piano.ec:74:14: error: unresolved identifier e; expected Key
   Piano.ec:74:18: error: undefined class Mixer
   Piano.ec:75:14: error: unresolved identifier r; expected Key
   Piano.ec:75:18: error: undefined class Mixer
   Piano.ec:76:14: error: unresolved identifier t; expected Key
   Piano.ec:76:18: error: undefined class Mixer
   Piano.ec:77:14: error: unresolved identifier y; expected Key
   Piano.ec:77:18: error: undefined class Mixer
   Piano.ec:78:14: error: unresolved identifier u; expected Key
   Piano.ec:78:18: error: undefined class Mixer
   Piano.ec:79:14: error: unresolved identifier i; expected Key
   Piano.ec:79:18: error: undefined class Mixer
   Piano.ec:80:14: error: unresolved identifier o; expected Key
   Piano.ec:80:18: error: undefined class Mixer
   Piano.ec:81:14: error: unresolved identifier p; expected Key
   Piano.ec:81:18: error: undefined class Mixer
   Piano.ec:82:14: error: unresolved identifier k2; expected Key
   Piano.ec:82:19: error: undefined class Mixer
   Piano.ec:83:14: error: unresolved identifier k3; expected Key
   Piano.ec:83:19: error: undefined class Mixer
   Piano.ec:84:14: error: unresolved identifier k5; expected Key
   Piano.ec:84:19: error: undefined class Mixer
   Piano.ec:85:14: error: unresolved identifier k6; expected Key
   Piano.ec:85:19: error: undefined class Mixer
   Piano.ec:86:14: error: unresolved identifier k7; expected Key
   Piano.ec:86:19: error: undefined class Mixer
   Piano.ec:87:14: error: unresolved identifier k9; expected Key
   Piano.ec:87:19: error: undefined class Mixer
   Piano.ec:88:14: error: unresolved identifier k0; expected Key
   Piano.ec:88:19: error: undefined class Mixer

BitmapAudioKB (Debug) - 118 errors, 3 warnings                            
I think the problem may be audio library or audio class wrapper in ecere has not been imported into the project.So I tried to add C:\person\ecere\ecere\extras\audio folder into the project's additional including path by Project->Project Setting->'Additional Include Directories',IDE crashed then.

Thanks for your help in advance.

Regards,
Sam
Last edited by samsam598 on Tue Aug 23, 2011 8:18 pm, edited 1 time in total.
jerome
Site Admin
Posts: 608
Joined: Sat Jan 16, 2010 11:16 pm

Re: Adding additional include path lead to IDE crash

Post by jerome »

Hi Sam,

What you'd need to do actually is to open up the EcereAudio project under that extras/audio folder and build it (Which will produce a file named EcereAudio.dll), and then make sure it is inside your Executable path (e.g. you could copy it to C:\Program Files (x86)\Ecere SDK\bin) so that the compiler can find it when you build the Piano.

To build EcereAudio.epj, I had to tweak the DirectSound header a bit (which you can find in sdk\deps\DirectX-9.0\include\dsound.h) by commenting out line 237:

//typedef const GUID *LPCGUID;

I also had to tweak sdk\extras\audio\dsound.ec in my case by adding a work around for a conflict with the Ecere 'Array' class:

Code: Select all

#if defined(__WIN32__)
 
#define byte _byte
#define Method _Method
#define Function _Function
#define int64 _int64
#define WIN32_LEAN_AND_MEAN
#define MessageBox _MessageBox
#define Array _Array
 
#include <windows.h>
 
#include <mmsystem.h>
#include <dsound.h>
#undef Array
#undef MessageBox
#undef byte
#undef Method
#undef Function
#undef int64
 
import "audio"
I think will commit both of these tweaks to the repository source code.

You will probably still need to add an include path for the sdk/deps/DirectX-9.0/include folder, and I didn't get a crash here but I noticed that the folder selection dialog for additional include is broken (again), so I will take a quick look to see what I can do. However, it's only broken when you use the folder selection dialog, if you type in or paste the path in the edit box directly, it should work fine.

Another workaround might be to use the File/Global Settings/Compilers/Include dialog instead for now, the difference is that this will affect all projects.

All the best,

Jerome
samsam598
Posts: 212
Joined: Thu Apr 14, 2011 9:44 pm

Re: Adding additional include path lead to IDE crash

Post by samsam598 »

Thanks Jerome!

The first build EcereAudio without modifying any source/header got below error:

Code: Select all

Default Compiler
Building project EcereAudio using the Release configuration...
Generating symbols...
dsound.ec
Compiling...
dsound.ec
   dsound.ec:1:1: error: Couldn't open obj/release.win32\dsound.sym
   dsound.ec:614:24: error: syntax error
   dsound.ec:615:23: error: syntax error
   dsound.ec:658:24: error: syntax error
   dsound.ec:659:13: error: syntax error

EcereAudio (Release) - 5 errors, no warning
Will have a try later after modify the headers as you mentioned.Thanks.

Btw,Acovel Music Player is a very nice software write in Ecere,I was wondering whether it is decided to be a non-open source program?

Thanks.
jerome
Site Admin
Posts: 608
Joined: Sat Jan 16, 2010 11:16 pm

Re: Adding additional include path lead to IDE crash

Post by jerome »

Hi Sam,

Your problem right now is that it's not finding 'dsound.h'.
You need to add to your include paths 'sdk\deps\DirectX-9.0\include' as I mentioned.
Then you might need to tweak the header and add the #define Array _Array / #undef Array around the
'#include' in dsound.ec

Yes Acovel is quite nice, I had great hopes for it! But as everything else I don't have enough time to work on it.

I was planning to work on it a bit more before making it open-source.

Regards,

Jerome
jerome
Site Admin
Posts: 608
Joined: Sat Jan 16, 2010 11:16 pm

Re: Adding additional include path lead to IDE crash

Post by jerome »

Sam,

Just to let you know I've committed and pushed to GitHub both the tweaked audio files, and a fix for the Additional Include path problems. Thanks for pointing those out.

Regards,

Jerome
samsam598
Posts: 212
Joined: Thu Apr 14, 2011 9:44 pm

Re: Adding additional include path lead to IDE crash

Post by samsam598 »

Hi Jerome,

Thanks for letting me know the updates.I've updated my source accordinly and built the package sccessfully.

The example scanning which I compiled successfully in previous IDE but now can't get compiled.

Code: Select all


Default Compiler
Building project wiaTest using the Release configuration...
Generating symbols...
wia.ec
Compiling...
wiaTest.ec
   wiaTest.ec:3:1: error: Couldn't open obj/release.win32\wia.sym
   wiaTest.ec:3:1: error: Couldn't open obj/release.win32\wia.sym
   wiaTest.ec:63:12: warning: incompatible expression this.imagePreview (Picture); expected ecere::com::Instance
   wiaTest.ec:64:11: warning: incompatible expression this.scan (Button); expected ecere::com::Instance
   wiaTest.ec:5:4: error: couldn't find member text in class ScanningTest
   wiaTest.ec:0:0: error: couldn't determine type of this.text
   wiaTest.ec:0:0: error: couldn't determine type of this.text
   wiaTest.ec:0:0: error: couldn't determine type of this.text = "WIA Scanning Test"
   wiaTest.ec:6:4: error: couldn't find member background in class ScanningTest
   wiaTest.ec:0:0: error: couldn't determine type of this.background
   wiaTest.ec:6:17: error: unresolved identifier activeBorder
   wiaTest.ec:0:0: error: couldn't determine type of this.background
   wiaTest.ec:0:0: error: couldn't determine type of activeBorder
   wiaTest.ec:0:0: error: couldn't determine type of this.background = activeBorder
   wiaTest.ec:7:4: error: couldn't find member borderStyle in class ScanningTest
   wiaTest.ec:0:0: error: couldn't determine type of this.borderStyle
   wiaTest.ec:7:18: error: unresolved identifier fixed
   wiaTest.ec:0:0: error: couldn't determine type of this.borderStyle
   wiaTest.ec:0:0: error: couldn't determine type of fixed
   wiaTest.ec:0:0: error: couldn't determine type of this.borderStyle = fixed
   wiaTest.ec:8:4: error: couldn't find member hasMinimize in class ScanningTest
   wiaTest.ec:0:0: error: couldn't determine type of this.hasMinimize
   wiaTest.ec:8:18: error: unresolved identifier true
   wiaTest.ec:0:0: error: couldn't determine type of this.hasMinimize
   wiaTest.ec:0:0: error: couldn't determine type of true
   wiaTest.ec:0:0: error: couldn't determine type of this.hasMinimize = true
   wiaTest.ec:9:4: error: couldn't find member hasClose in class ScanningTest
   wiaTest.ec:0:0: error: couldn't determine type of this.hasClose
   wiaTest.ec:9:15: error: unresolved identifier true
   wiaTest.ec:0:0: error: couldn't determine type of this.hasClose
   wiaTest.ec:0:0: error: couldn't determine type of true
   wiaTest.ec:0:0: error: couldn't determine type of this.hasClose = true
   wiaTest.ec:10:4: error: couldn't find member size in class ScanningTest
   wiaTest.ec:0:0: error: couldn't determine type of this.size
   wiaTest.ec:10:11: error: couldn't determine type of  { 360, 500 }
   wiaTest.ec:0:0: error: couldn't determine type of this.size
   wiaTest.ec:0:0: error: couldn't determine type of  { 360, 500 }
   wiaTest.ec:0:0: error: couldn't determine type of this.size =  { 360, 500 }
   wiaTest.ec:63:71: error: unresolved identifier deep
   wiaTest.ec:63:84: error: couldn't determine type of  { 320, 424 }
   wiaTest.ec:63:107: error: couldn't determine type of  { right = 16, top = 16 }
   wiaTest.ec:66:35: error: couldn't determine type of  { 60, 21 }
   wiaTest.ec:66:56: error: couldn't determine type of  { bottom = 8 }
   wiaTest.ec:64:4: error: couldn't find virtual method NotifyClicked in class Button
   wiaTest.ec:73:23: warning: GetScanner undefined; assuming extern returning int
   wiaTest.ec:73:34: error: unresolved identifier true
   wiaTest.ec:73:23: warning: incompatible expression GetScanner(true) (uint); expected WiaItem
   wiaTest.ec:74:35: error: undefined class WiaItem
   wiaTest.ec:74:35: warning: incompatible expression scanner.GetBitmap(&f) (uint); expected Bitmap
   wiaTest.ec:82:13: warning: not enough arguments for method ScanningTest::SetImage (0 given, expected 0)
   wiaTest.ec:26:10: warning: incompatible expression this.scannedImage (File); expected bool
   wiaTest.ec:30:10: error: undefined class Picture
   wiaTest.ec:30:10: error: couldn't determine type of this.imagePreview.image
   wiaTest.ec:30:31: error: couldn't determine type of  { s }
   wiaTest.ec:30:10: error: couldn't determine type of this.imagePreview.image
   wiaTest.ec:30:10: error: couldn't determine type of  { s }
   wiaTest.ec:30:10: error: couldn't determine type of this.imagePreview.image =  { s }
   wiaTest.ec:33:10: error: undefined class Picture
   wiaTest.ec:33:10: error: couldn't determine type of this.imagePreview.image
   wiaTest.ec:33:10: error: couldn't determine type of this.imagePreview.image
   wiaTest.ec:33:10: error: couldn't determine type of this.imagePreview.image = (((void *)0))
   wiaTest.ec:35:13: error: undefined class Picture
   wiaTest.ec:35:13: error: couldn't determine type of this.imagePreview.image
   wiaTest.ec:35:13: error: member operator on non-structure type expression this.imagePreview.image.bitmap
   wiaTest.ec:35:13: error: couldn't determine type of this.imagePreview.image.bitmap; expected Bitmap
   wiaTest.ec:35:7: error: couldn't determine type of this.imagePreview.image.bitmap
   wiaTest.ec:36:10: warning: incompatible expression bmp (Bitmap); expected bool
   wiaTest.ec:38:31: error: undefined class Bitmap
   wiaTest.ec:38:44: error: undefined class Bitmap
   wiaTest.ec:38:24: error: couldn't determine type of bmp.width
   wiaTest.ec:38:24: error: couldn't determine type of (float)bmp.height / bmp.width; expected float
   wiaTest.ec:41:27: error: undefined class Bitmap
   wiaTest.ec:41:21: error: couldn't determine type of bmp.width
   wiaTest.ec:41:39: error: undefined class Bitmap
   wiaTest.ec:41:21: error: couldn't determine type of 424 * bmp.width
   wiaTest.ec:41:21: error: couldn't determine type of bmp.height
   wiaTest.ec:41:21: error: couldn't determine type of 424 * bmp.width / bmp.height; expected int
   wiaTest.ec:42:13: error: undefined class Picture
   wiaTest.ec:42:13: error: couldn't determine type of this.imagePreview.size
   wiaTest.ec:42:33: error: couldn't determine type of  { w, 424 }
   wiaTest.ec:42:13: error: couldn't determine type of this.imagePreview.size
   wiaTest.ec:42:13: error: couldn't determine type of  { w, 424 }
   wiaTest.ec:42:13: error: couldn't determine type of this.imagePreview.size =  { w, 424 }
   wiaTest.ec:46:27: error: undefined class Bitmap
   wiaTest.ec:46:21: error: couldn't determine type of bmp.height
   wiaTest.ec:46:40: error: undefined class Bitmap
   wiaTest.ec:46:21: error: couldn't determine type of 320 * bmp.height
   wiaTest.ec:46:21: error: couldn't determine type of bmp.width
   wiaTest.ec:46:21: error: couldn't determine type of 320 * bmp.height / bmp.width; expected int
   wiaTest.ec:47:13: error: undefined class Picture
   wiaTest.ec:47:13: error: couldn't determine type of this.imagePreview.size
   wiaTest.ec:47:33: error: couldn't determine type of  { 320, h }
   wiaTest.ec:47:13: error: couldn't determine type of this.imagePreview.size
   wiaTest.ec:47:13: error: couldn't determine type of  { 320, h }
   wiaTest.ec:47:13: error: couldn't determine type of this.imagePreview.size =  { 320, h }
   wiaTest.ec:55:28: error: unresolved identifier true
   wiaTest.ec:55:17: warning: incompatible expression GetScanner(true) (int); expected WiaItem

WIA (Release) - 88 errors, 9 warnings
BWT,what's the *.sym file for?
Thanks for your help again.
jerome
Site Admin
Posts: 608
Joined: Sat Jan 16, 2010 11:16 pm

Re: Adding additional include path lead to IDE crash

Post by jerome »

Hi Sam,

The '.sym' (Symbol) files are what supports the eC 'import' mechanism between multiple source (.ec) modules. They sort of play the role which header (.h) files play in C, except that they are auto-generated, and unless something goes wrong like right now you don't need to think about them. The .sym file describes what is defined in a source .ec file.

The problem you're having right now is that it's not finding the header files, e.g. wia.h
We have a pending issue to improve the compiler error message. I admit it's not obvious to know what is going on from reading the compiler output :)

This is part of the Microsoft Windows SDK, if you managed to build this application before, perhaps you have the file somewhere? Let me know if you need help getting it, I think you might need to download a web installer to get it installed, but they distribute it freely.

It is tricky however when mixing the MinGW Windows API headers with the MSSDK, so you have to take great care or things can go very wrong and you don't know why (Happened to me recently).
What you should do is in your File/Global settings, Compilers, Includes files, the MinGW include path should come first (given priority to resovle files), and *then* the MSSDK, e.g.:

C:\Program Files (x86)\ECERE SDK\mingw\include
C:\mssdk\include

Same goes for the libraries:

C:\Program Files (x86)\ECERE SDK\mingw\lib
C:\mssdk\Lib

This is because some headers are provided in both places and are not compatible together.

This should solve most of the errors except for 1: I just realized that the wiaTest sample was not updated since a change in our Wia classes, GetBitmap is now GetBitmaps for scanning multiple images at once. I've fixed that in this commit so you can pull this fix.

Regards,

Jerome
samsam598
Posts: 212
Joined: Thu Apr 14, 2011 9:44 pm

Re: Adding additional include path lead to IDE crash

Post by samsam598 »

Hi Jerome,

Thanks.I forgot the compiled one is on another computer which has MS SDK installed.Thanks for clarifying.
samsam598
Posts: 212
Joined: Thu Apr 14, 2011 9:44 pm

Re: Adding additional include path lead to IDE crash

Post by samsam598 »

Hi Jerome,

Two issues here:
1.The Additional Include Dierectory--The IDE won't crash any more,but still can not add an include path to the listbox ,anything added in,still need to type in the editbox.
2.The Piano and PlaySound sample works now.But the sound is so weak that I counld hardly hear.Don't know whether this is expected.
3.The WavePlayer sample can't get compiled still.If I don't add dx/include to the project,got below error:

Code: Select all

 ..\..\..\extras\audio\dsound.ec:616:24: error: syntax error
   ..\..\..\extras\audio\dsound.ec:617:23: error: syntax error
   ..\..\..\extras\audio\dsound.ec:660:24: error: syntax error
   ..\..\..\extras\audio\dsound.ec:661:13: error: syntax error          
if I add dx/include into the project,got errors:

Code: Select all

  ..\..\..\..\..\CodeLite\gcc\sdk\dx\include\dsound.h:233:28: error: syntax error
   ..\..\..\..\..\CodeLite\gcc\sdk\dx\include\dsound.h:233:28: error: syntax error
   ..\..\..\..\..\CodeLite\gcc\sdk\dx\include\dsound.h:236:39: error: syntax error
   ..\..\..\..\..\CodeLite\gcc\sdk\dx\include\dsound.h:236:39: error: syntax error
   ..\..\..\..\..\CodeLite\gcc\sdk\dx\include\dsound.h:237:51: error: syntax error
...
   ..\..\..\extras\audio\dsound.ec:732:37: error: syntax error
   ..\..\..\extras\audio\dsound.ec:769:1: error: syntax error
   ..\..\..\extras\audio\dsound.ec:26:7: error: unresolved identifier streamingSound; expected bool
   ..\..\..\extras\audio\dsound.ec:27:7: error: unresolved identifier streamingSound
      ..\..\..\extras\audio\dsound.ec:97:36: error: unresolved identifier hmx; expected struct HMIXEROBJ__ *
   ..\..\..\extras\audio\dsound.ec:108:7: error: couldn't determine type of application
   ..\..\..\extras\audio\dsound.ec:110:10: error: unresolved identifier streamingSound; expected bool
   ..\..\..\extras\audio\dsound.ec:112:21: error: unresolved identifier streamingSound
   ..\..\..\extras\audio\dsound.ec:112:21: error: member operator on non-structure type expression streamingSound.volume
   ..\..\..\extras\audio\dsound.ec:112:21: error: couldn't determine type of streamingSound.volume; expected double
   ..\..\..\extras\audio\dsound.ec:112:10: error: couldn't determine type of streamingSound.volume
   ..\..\..\extras\audio\dsound.ec:121:37: error: couldn't determine type of pcm
   ..\..\..\extras\audio\dsound.ec:122:28: error: unresolved identifier hmx; expected struct HMIXEROBJ__ *
   ..\..\..\extras\audio\dsound.ec:134:35: error: unresolved identifier hmx; expected struct HMIXEROBJ__ *
   ..\..\..\extras\audio\dsound.ec:145:37: error: unresolved identifier hmx; expected struct HMIXEROBJ__ *
   ..\..\..\extras\audio\dsound.ec:159:4: error: couldn't determine type of streamingSound
   ..\..\..\extras\audio\dsound.ec:159:4: error: couldn't determine type of delete streamingSound
   ..\..\..\extras\audio\dsound.ec:161:4: error: unresolved identifier g_pSoundManager
   ..\..\..\extras\audio\dsound.ec:161:4: error: member operator on non-structure type expression g_pSoundManager.Initialize
   ..\..\..\extras\audio\dsound.ec:161:31: error: undefined class AudioSpec
   ..\..\..\extras\audio\dsound.ec:161:31: error: couldn't determine type of wanted.windowHandle
   ..\..\..\extras\audio\dsound.ec:162:4: error: unresolved identifier g_pSoundManager
   ..\..\..\extras\audio\dsound.ec:162:4: error: member operator on non-structure type expression g_pSoundManager.SetPrimaryBufferFormat
   ..\..\..\extras\audio\dsound.ec:162:43: error: undefined class AudioSpec
   ..\..\..\extras\audio\dsound.ec:162:43: error: couldn't determine type of wanted.channels
   ..\..\..\extras\audio\dsound.ec:162:60: error: undefined class AudioSpec
   ..\..\..\extras\audio\dsound.ec:162:60: error: couldn't determine type of wanted.freq
   ..\..\..\extras\audio\dsound.ec:162:73: error: undefined class AudioSpec
   ..\..\..\extras\audio\dsound.ec:162:73: error: couldn't determine type of wanted.bits
   ..\..\..\extras\audio\dsound.ec:164:8: error: undefined class AudioSpec
   ..\..\..\extras\audio\dsound.ec:164:7: error: couldn't determine type of wanted.channels
   ..\..\..\extras\audio\dsound.ec:164:7: error: couldn't determine type of !wanted.channels; expected bool
   ..\..\..\extras\audio\dsound.ec:165:7: error: undefined class AudioSpec
   ..\..\..\extras\audio\dsound.ec:165:7: error: couldn't determine type of wanted.channels
   ..\..\..\extras\audio\dsound.ec:165:7: error: couldn't determine type of wanted.channels
   ..\..\..\extras\audio\dsound.ec:165:7: error: couldn't determine type of wanted.channels = 2
   ..\..\..\extras\audio\dsound.ec:166:18: error: undefined class AudioSpec
   ..\..\..\extras\audio\dsound.ec:166:18: error: couldn't determine type of wanted.bits
   ..\..\..\extras\audio\dsound.ec:166:36: error: undefined class AudioSpec
   ..\..\..\extras\audio\dsound.ec:166:18: error: couldn't determine type of wanted.bits / 8
   ..\..\..\extras\audio\dsound.ec:166:18: error: couldn't determine type of wanted.channels
   ..\..\..\extras\audio\dsound.ec:166:18: error: couldn't determine type of wanted.bits / 8 * wanted.channels; expected uint
   ..\..\..\extras\audio\dsound.ec:166:4: error: couldn't determine type of wanted.bits / 8 * wanted.channels
   ..\..\..\extras\audio\dsound.ec:168:19: error: undefined class AudioSpec
   ..\..\..\extras\audio\dsound.ec:168:19: error: couldn't determine type of wanted.freq
   ..\..\..\extras\audio\dsound.ec:168:19: error: couldn't determine type of wanted.freq / 2
   ..\..\..\extras\audio\dsound.ec:168:19: error: couldn't determine type of wanted.freq / 2 / 16; expected uint
   ..\..\..\extras\audio\dsound.ec:168:4: error: couldn't determine type of wanted.freq / 2 / 16
   ..\..\..\extras\audio\dsound.ec:171:4: error: undefined class AudioSpec
   ..\..\..\extras\audio\dsound.ec:171:4: error: couldn't determine type of result.size
   ..\..\..\extras\audio\dsound.ec:171:4: error: couldn't determine type of result.size
   ..\..\..\extras\audio\dsound.ec:171:4: error: couldn't determine type of result.size = dwNotifySize * 16
   ..\..\..\extras\audio\dsound.ec:173:4: error: unresolved identifier g_pSoundManager
   ..\..\..\extras\audio\dsound.ec:173:4: error: member operator on non-structure type expression g_pSoundManager.InitStreaming
   ..\..\..\extras\audio\dsound.ec:173:34: error: couldn't determine type of streamingSound
   ..\..\..\extras\audio\dsound.ec:173:34: error: couldn't determine type of &streamingSound
   ..\..\..\extras\audio\dsound.ec:173:69: error: unresolved identifier dSoundThread
   ..\..\..\extras\audio\dsound.ec:173:69: error: member operator on non-structure type expression dSoundThread.g_hNotificationEvent
   ..\..\..\extras\audio\dsound.ec:173:69: error: couldn't determine type of dSoundThread.g_hNotificationEvent
   ..\..\..\extras\audio\dsound.ec:174:7: error: undefined class AudioSpec
   ..\..\..\extras\audio\dsound.ec:174:7: error: couldn't determine type of wanted.callback
   ..\..\..\extras\audio\dsound.ec:174:24: error: undefined class AudioSpec
   ..\..\..\extras\audio\dsound.ec:174:24: error: couldn't determine type of wanted.userdata
   ..\..\..\extras\audio\dsound.ec:174:41: error: undefined class AudioSpec
   ..\..\..\extras\audio\dsound.ec:174:41: error: couldn't determine type of wanted.channels
   ..\..\..\extras\audio\dsound.ec:174:58: error: undefined class AudioSpec
   ..\..\..\extras\audio\dsound.ec:174:58: error: couldn't determine type of wanted.freq
   ..\..\..\extras\audio\dsound.ec:174:71: error: undefined class AudioSpec
   ..\..\..\extras\audio\dsound.ec:174:71: error: couldn't determine type of wanted.bits
   ..\..\..\extras\audio\dsound.ec:175:7: error: unresolved identifier streamingSound; expected bool
   ..\..\..\extras\audio\dsound.ec:177:7: error: unresolved identifier streamingSound
   ..\..\..\extras\audio\dsound.ec:177:7: error: member operator on non-structure type expression streamingSound.volume
   ..\..\..\extras\audio\dsound.ec:177:7: error: couldn't determine type of streamingSound.volume
   ..\..\..\extras\audio\dsound.ec:177:31: error: undefined class AudioSpec
   ..\..\..\extras\audio\dsound.ec:177:31: error: couldn't determine type of wanted.volume
   ..\..\..\extras\audio\dsound.ec:177:7: error: couldn't determine type of streamingSound.volume
   ..\..\..\extras\audio\dsound.ec:177:7: error: couldn't determine type of wanted.volume
   ..\..\..\extras\audio\dsound.ec:177:7: error: couldn't determine type of streamingSound.volume = wanted.volume
   ..\..\..\extras\audio\dsound.ec:178:7: error: unresolved identifier dSoundThread
   ..\..\..\extras\audio\dsound.ec:178:7: error: member operator on non-structure type expression dSoundThread.bDone
   ..\..\..\extras\audio\dsound.ec:178:7: error: couldn't determine type of dSoundThread.bDone
   ..\..\..\extras\audio\dsound.ec:178:28: error: unresolved identifier false
   ..\..\..\extras\audio\dsound.ec:178:7: error: couldn't determine type of dSoundThread.bDone
   ..\..\..\extras\audio\dsound.ec:178:7: error: couldn't determine type of false
   ..\..\..\extras\audio\dsound.ec:178:7: error: couldn't determine type of dSoundThread.bDone = false
   ..\..\..\extras\audio\dsound.ec:191:7: error: unresolved identifier dSoundThread
   ..\..\..\extras\audio\dsound.ec:191:7: error: member operator on non-structure type expression dSoundThread.Create
   ..\..\..\extras\audio\dsound.ec:197:7: error: unresolved identifier dSoundThread; expected bool
   ..\..\..\extras\audio\dsound.ec:199:7: error: unresolved identifier dSoundThread
   ..\..\..\extras\audio\dsound.ec:199:7: error: member operator on non-structure type expression dSoundThread.bDone
   ..\..\..\extras\audio\dsound.ec:199:7: error: couldn't determine type of dSoundThread.bDone
   ..\..\..\extras\audio\dsound.ec:199:28: error: unresolved identifier true
   ..\..\..\extras\audio\dsound.ec:199:7: error: couldn't determine type of dSoundThread.bDone
   ..\..\..\extras\audio\dsound.ec:199:7: error: couldn't determine type of true
   ..\..\..\extras\audio\dsound.ec:199:7: error: couldn't determine type of dSoundThread.bDone = true
   ..\..\..\extras\audio\dsound.ec:200:16: error: unresolved identifier dSoundThread
   ..\..\..\extras\audio\dsound.ec:200:16: error: member operator on non-structure type expression dSoundThread.g_hNotificationEvent
   ..\..\..\extras\audio\dsound.ec:200:16: error: couldn't determine type of dSoundThread.g_hNotificationEvent; expected void *
   ..\..\..\extras\audio\dsound.ec:201:7: error: unresolved identifier dSoundThread
   ..\..\..\extras\audio\dsound.ec:201:7: error: member operator on non-structure type expression dSoundThread.Wait
   ..\..\..\extras\audio\dsound.ec:203:4: error: couldn't determine type of streamingSound
   ..\..\..\extras\audio\dsound.ec:203:4: error: couldn't determine type of delete streamingSound
   ..\..\..\extras\audio\dsound.ec:209:7: error: couldn't determine type of streamingSound
   ..\..\..\extras\audio\dsound.ec:209:7: error: couldn't determine type of !streamingSound; expected bool
   ..\..\..\extras\audio\dsound.ec:212:7: error: unresolved identifier streamingSound
   ..\..\..\extras\audio\dsound.ec:212:7: error: member operator on non-structure type expression streamingSound.Reset
   ..\..\..\extras\audio\dsound.ec:215:11: error: unresolved identifier streamingSound
   ..\..\..\extras\audio\dsound.ec:215:11: error: member operator on non-structure type expression streamingSound.GetBuffer
   ..\..\..\extras\audio\dsound.ec:215:11: warning: incompatible expression streamingSound.GetBuffer(0) (uint); expected void *
   ..\..\..\extras\audio\dsound.ec:217:13: error: unresolved identifier dSoundThread
   ..\..\..\extras\audio\dsound.ec:217:13: error: member operator on non-structure type expression dSoundThread.g_hNotificationEvent
   ..\..\..\extras\audio\dsound.ec:217:13: error: couldn't determine type of dSoundThread.g_hNotificationEvent; expected void *
   ..\..\..\extras\audio\dsound.ec:291:13: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:291:13: error: couldn't determine type of (*(this.apDSBuffer[i])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:291:13: error: couldn't determine type of *(*(this.apDSBuffer[i])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:291:13: error: couldn't determine type of (*(*(this.apDSBuffer[i])).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:291:13: error: member operator on non-structure type expression (*(*(this.apDSBuffer[i])).lpVtbl).Release
   ..\..\..\extras\audio\dsound.ec:244:10: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:244:10: error: couldn't determine type of (*(this.apDSBuffer[0])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:244:10: error: couldn't determine type of *(*(this.apDSBuffer[0])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:244:10: error: couldn't determine type of (*(*(this.apDSBuffer[0])).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:244:10: error: member operator on non-structure type expression (*(*(this.apDSBuffer[0])).lpVtbl).SetVolume
   ..\..\..\extras\audio\dsound.ec:258:10: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:258:10: error: couldn't determine type of (*(this.apDSBuffer[0])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:258:10: error: couldn't determine type of *(*(this.apDSBuffer[0])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:258:10: error: couldn't determine type of (*(*(this.apDSBuffer[0])).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:258:10: error: member operator on non-structure type expression (*(*(this.apDSBuffer[0])).lpVtbl).SetPan
   ..\..\..\extras\audio\dsound.ec:309:27: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:309:27: error: couldn't determine type of (*(pDSB)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:309:27: error: couldn't determine type of *(*(pDSB)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:309:27: error: couldn't determine type of (*(*(pDSB)).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:309:27: error: member operator on non-structure type expression (*(*(pDSB)).lpVtbl).GetStatus
   ..\..\..\extras\audio\dsound.ec:324:24: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:324:24: error: couldn't determine type of (*(pDSB)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:324:24: error: couldn't determine type of *(*(pDSB)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:324:24: error: couldn't determine type of (*(*(pDSB)).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:324:24: error: member operator on non-structure type expression (*(*(pDSB)).lpVtbl).Restore
   ..\..\..\extras\audio\dsound.ec:320:18: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:320:18: error: couldn't determine type of (*(pDSB)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:320:18: error: couldn't determine type of *(*(pDSB)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:320:18: error: couldn't determine type of (*(*(pDSB)).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:320:18: error: member operator on non-structure type expression (*(*(pDSB)).lpVtbl).Restore
   ..\..\..\extras\audio\dsound.ec:348:13: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:348:13: error: couldn't determine type of (*(this.apDSBuffer[i])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:348:13: error: couldn't determine type of *(*(this.apDSBuffer[i])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:348:13: error: couldn't determine type of (*(*(this.apDSBuffer[i])).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:348:13: error: member operator on non-structure type expression (*(*(this.apDSBuffer[i])).lpVtbl).GetStatus
   ..\..\..\extras\audio\dsound.ec:407:10: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:407:10: error: couldn't determine type of (*this.pDSB).lpVtbl
   ..\..\..\extras\audio\dsound.ec:407:10: error: couldn't determine type of *(*this.pDSB).lpVtbl
   ..\..\..\extras\audio\dsound.ec:407:10: error: couldn't determine type of (*(*this.pDSB).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:407:10: error: member operator on non-structure type expression (*(*this.pDSB).lpVtbl).SetFrequency
   ..\..\..\extras\audio\dsound.ec:414:16: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:414:16: error: couldn't determine type of (*this.pDSB).lpVtbl
   ..\..\..\extras\audio\dsound.ec:414:16: error: couldn't determine type of *(*this.pDSB).lpVtbl
   ..\..\..\extras\audio\dsound.ec:414:16: error: couldn't determine type of (*(*this.pDSB).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:414:16: error: member operator on non-structure type expression (*(*this.pDSB).lpVtbl).Play
   ..\..\..\extras\audio\dsound.ec:426:16: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:426:16: error: couldn't determine type of (*(this.apDSBuffer[i])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:426:16: error: couldn't determine type of *(*(this.apDSBuffer[i])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:426:16: error: couldn't determine type of (*(*(this.apDSBuffer[i])).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:426:16: error: member operator on non-structure type expression (*(*(this.apDSBuffer[i])).lpVtbl).Stop
   ..\..\..\extras\audio\dsound.ec:455:13: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:455:13: error: couldn't determine type of (*(this.apDSBuffer[0])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:455:13: error: couldn't determine type of *(*(this.apDSBuffer[0])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:455:13: error: couldn't determine type of (*(*(this.apDSBuffer[0])).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:455:13: error: member operator on non-structure type expression (*(*(this.apDSBuffer[0])).lpVtbl).GetCurrentPosition
   ..\..\..\extras\audio\dsound.ec:472:16: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:472:16: error: couldn't determine type of (*(this.apDSBuffer[0])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:472:16: error: couldn't determine type of *(*(this.apDSBuffer[0])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:472:16: error: couldn't determine type of (*(*(this.apDSBuffer[0])).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:472:16: error: member operator on non-structure type expression (*(*(this.apDSBuffer[0])).lpVtbl).Lock
   ..\..\..\extras\audio\dsound.ec:476:16: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:476:16: error: couldn't determine type of (*(this.apDSBuffer[0])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:476:16: error: couldn't determine type of *(*(this.apDSBuffer[0])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:476:16: error: couldn't determine type of (*(*(this.apDSBuffer[0])).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:476:16: error: member operator on non-structure type expression (*(*(this.apDSBuffer[0])).lpVtbl).Unlock
   ..\..\..\extras\audio\dsound.ec:489:19: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:489:19: error: couldn't determine type of (*(this.apDSBuffer[0])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:489:19: error: couldn't determine type of *(*(this.apDSBuffer[0])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:489:19: error: couldn't determine type of (*(*(this.apDSBuffer[0])).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:489:19: error: member operator on non-structure type expression (*(*(this.apDSBuffer[0])).lpVtbl).Lock
   ..\..\..\extras\audio\dsound.ec:493:19: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:493:19: error: couldn't determine type of (*(this.apDSBuffer[0])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:493:19: error: couldn't determine type of *(*(this.apDSBuffer[0])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:493:19: error: couldn't determine type of (*(*(this.apDSBuffer[0])).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:493:19: error: member operator on non-structure type expression (*(*(this.apDSBuffer[0])).lpVtbl).Unlock
   ..\..\..\extras\audio\dsound.ec:507:16: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:507:16: error: couldn't determine type of (*(this.apDSBuffer[0])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:507:16: error: couldn't determine type of *(*(this.apDSBuffer[0])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:507:16: error: couldn't determine type of (*(*(this.apDSBuffer[0])).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:507:16: error: member operator on non-structure type expression (*(*(this.apDSBuffer[0])).lpVtbl).Lock
   ..\..\..\extras\audio\dsound.ec:511:16: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:511:16: error: couldn't determine type of (*(this.apDSBuffer[0])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:511:16: error: couldn't determine type of *(*(this.apDSBuffer[0])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:511:16: error: couldn't determine type of (*(*(this.apDSBuffer[0])).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:511:16: error: member operator on non-structure type expression (*(*(this.apDSBuffer[0])).lpVtbl).Unlock
   ..\..\..\extras\audio\dsound.ec:545:16: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:545:16: error: couldn't determine type of (*(this.apDSBuffer[0])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:545:16: error: couldn't determine type of *(*(this.apDSBuffer[0])).lpVtbl
   ..\..\..\extras\audio\dsound.ec:545:16: error: couldn't determine type of (*(*(this.apDSBuffer[0])).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:545:16: error: member operator on non-structure type expression (*(*(this.apDSBuffer[0])).lpVtbl).SetCurrentPosition
   ..\..\..\extras\audio\dsound.ec:565:10: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:565:10: error: couldn't determine type of (*(pDSB)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:565:10: error: couldn't determine type of *(*(pDSB)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:565:10: error: couldn't determine type of (*(*(pDSB)).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:565:10: error: member operator on non-structure type expression (*(*(pDSB)).lpVtbl).Lock
   ..\..\..\extras\audio\dsound.ec:573:7: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:573:7: error: couldn't determine type of (*(pDSB)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:573:7: error: couldn't determine type of *(*(pDSB)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:573:7: error: couldn't determine type of (*(*(pDSB)).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:573:7: error: member operator on non-structure type expression (*(*(pDSB)).lpVtbl).Unlock
   ..\..\..\extras\audio\dsound.ec:587:10: error: undefined class IDirectSound8
   ..\..\..\extras\audio\dsound.ec:587:10: error: couldn't determine type of (*this.pDS).lpVtbl
   ..\..\..\extras\audio\dsound.ec:587:10: error: couldn't determine type of *(*this.pDS).lpVtbl
   ..\..\..\extras\audio\dsound.ec:587:10: error: couldn't determine type of (*(*this.pDS).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:587:10: error: member operator on non-structure type expression (*(*this.pDS).lpVtbl).Release
   ..\..\..\extras\audio\dsound.ec:596:10: error: undefined class IDirectSound8
   ..\..\..\extras\audio\dsound.ec:596:10: error: couldn't determine type of (*this.pDS).lpVtbl
   ..\..\..\extras\audio\dsound.ec:596:10: error: couldn't determine type of *(*this.pDS).lpVtbl
   ..\..\..\extras\audio\dsound.ec:596:10: error: couldn't determine type of (*(*this.pDS).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:596:10: error: member operator on non-structure type expression (*(*this.pDS).lpVtbl).Release
   ..\..\..\extras\audio\dsound.ec:601:27: warning: DirectSoundCreate8 undefined; assuming extern returning int
   ..\..\..\extras\audio\dsound.ec:605:27: error: undefined class IDirectSound8
   ..\..\..\extras\audio\dsound.ec:605:27: error: couldn't determine type of (*this.pDS).lpVtbl
   ..\..\..\extras\audio\dsound.ec:605:27: error: couldn't determine type of *(*this.pDS).lpVtbl
   ..\..\..\extras\audio\dsound.ec:605:27: error: couldn't determine type of (*(*this.pDS).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:605:27: error: member operator on non-structure type expression (*(*this.pDS).lpVtbl).SetCooperativeLevel
   ..\..\..\extras\audio\dsound.ec:624:12: error: couldn't find member dwSize in class int
   ..\..\..\extras\audio\dsound.ec:624:7: error: couldn't determine type of dsbd.dwSize
   ..\..\..\extras\audio\dsound.ec:624:7: error: couldn't determine type of dsbd.dwSize
   ..\..\..\extras\audio\dsound.ec:624:7: error: couldn't determine type of dsbd.dwSize = sizeof(DSBUFFERDESC)
   ..\..\..\extras\audio\dsound.ec:625:12: error: couldn't find member dwFlags in class int
   ..\..\..\extras\audio\dsound.ec:625:7: error: couldn't determine type of dsbd.dwFlags
   ..\..\..\extras\audio\dsound.ec:625:7: error: couldn't determine type of dsbd.dwFlags
   ..\..\..\extras\audio\dsound.ec:625:7: error: couldn't determine type of dsbd.dwFlags = 0x00000001 | 0x00000040 | 0x00000080
   ..\..\..\extras\audio\dsound.ec:626:12: error: couldn't find member dwBufferBytes in class int
   ..\..\..\extras\audio\dsound.ec:626:7: error: couldn't determine type of dsbd.dwBufferBytes
   ..\..\..\extras\audio\dsound.ec:626:7: error: couldn't determine type of dsbd.dwBufferBytes
   ..\..\..\extras\audio\dsound.ec:626:7: error: couldn't determine type of dsbd.dwBufferBytes = 0
   ..\..\..\extras\audio\dsound.ec:627:12: error: couldn't find member lpwfxFormat in class int
   ..\..\..\extras\audio\dsound.ec:627:7: error: couldn't determine type of dsbd.lpwfxFormat
   ..\..\..\extras\audio\dsound.ec:627:7: error: couldn't determine type of dsbd.lpwfxFormat
   ..\..\..\extras\audio\dsound.ec:627:7: error: couldn't determine type of dsbd.lpwfxFormat = (((void *)0))
   ..\..\..\extras\audio\dsound.ec:629:27: error: undefined class IDirectSound8
   ..\..\..\extras\audio\dsound.ec:629:27: error: couldn't determine type of (*this.pDS).lpVtbl
   ..\..\..\extras\audio\dsound.ec:629:27: error: couldn't determine type of *(*this.pDS).lpVtbl
   ..\..\..\extras\audio\dsound.ec:629:27: error: couldn't determine type of (*(*this.pDS).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:629:27: error: member operator on non-structure type expression (*(*this.pDS).lpVtbl).CreateSoundBuffer
   ..\..\..\extras\audio\dsound.ec:640:27: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:640:27: error: couldn't determine type of (*(pDSBPrimary)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:640:27: error: couldn't determine type of *(*(pDSBPrimary)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:640:27: error: couldn't determine type of (*(*(pDSBPrimary)).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:640:27: error: member operator on non-structure type expression (*(*(pDSBPrimary)).lpVtbl).SetFormat
   ..\..\..\extras\audio\dsound.ec:645:10: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:645:10: error: couldn't determine type of (*(pDSBPrimary)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:645:10: error: couldn't determine type of *(*(pDSBPrimary)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:645:10: error: couldn't determine type of (*(*(pDSBPrimary)).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:645:10: error: member operator on non-structure type expression (*(*(pDSBPrimary)).lpVtbl).Release
   ..\..\..\extras\audio\dsound.ec:674:12: error: couldn't find member guid3DAlgorithm in class int
   ..\..\..\extras\audio\dsound.ec:674:7: error: couldn't determine type of dsbd.guid3DAlgorithm
   ..\..\..\extras\audio\dsound.ec:674:7: error: couldn't determine type of dsbd.guid3DAlgorithm
   ..\..\..\extras\audio\dsound.ec:674:7: error: couldn't determine type of dsbd.guid3DAlgorithm = GUID_NULL
   ..\..\..\extras\audio\dsound.ec:675:26: warning: incompatible expression new0  WAVEFORMATEX[1] (struct tWAVEFORMATEX *); expected int
   ..\..\..\extras\audio\dsound.ec:676:7: error: cannot dereference type
   ..\..\..\extras\audio\dsound.ec:676:7: error: couldn't determine type of *dsbd.lpwfxFormat
   ..\..\..\extras\audio\dsound.ec:676:7: error: couldn't determine type of (*dsbd.lpwfxFormat)
   ..\..\..\extras\audio\dsound.ec:676:7: error: member operator on non-structure type expression (*dsbd.lpwfxFormat).wFormatTag
   ..\..\..\extras\audio\dsound.ec:676:7: error: couldn't determine type of (*dsbd.lpwfxFormat).wFormatTag
   ..\..\..\extras\audio\dsound.ec:676:7: error: couldn't determine type of (*dsbd.lpwfxFormat).wFormatTag
   ..\..\..\extras\audio\dsound.ec:676:7: error: couldn't determine type of (*dsbd.lpwfxFormat).wFormatTag
   ..\..\..\extras\audio\dsound.ec:676:7: error: couldn't determine type of (*dsbd.lpwfxFormat).wFormatTag = 1
   ..\..\..\extras\audio\dsound.ec:677:7: error: cannot dereference type
   ..\..\..\extras\audio\dsound.ec:677:7: error: couldn't determine type of *dsbd.lpwfxFormat
   ..\..\..\extras\audio\dsound.ec:677:7: error: couldn't determine type of (*dsbd.lpwfxFormat)
   ..\..\..\extras\audio\dsound.ec:677:7: error: member operator on non-structure type expression (*dsbd.lpwfxFormat).nChannels
   ..\..\..\extras\audio\dsound.ec:677:7: error: couldn't determine type of (*dsbd.lpwfxFormat).nChannels
   ..\..\..\extras\audio\dsound.ec:677:7: error: couldn't determine type of (*dsbd.lpwfxFormat).nChannels
   ..\..\..\extras\audio\dsound.ec:677:7: error: couldn't determine type of (*dsbd.lpwfxFormat).nChannels
   ..\..\..\extras\audio\dsound.ec:677:7: error: couldn't determine type of (*dsbd.lpwfxFormat).nChannels = (uint16)nChannels
   ..\..\..\extras\audio\dsound.ec:678:7: error: cannot dereference type
   ..\..\..\extras\audio\dsound.ec:678:7: error: couldn't determine type of *dsbd.lpwfxFormat
   ..\..\..\extras\audio\dsound.ec:678:7: error: couldn't determine type of (*dsbd.lpwfxFormat)
   ..\..\..\extras\audio\dsound.ec:678:7: error: member operator on non-structure type expression (*dsbd.lpwfxFormat).nSamplesPerSec
   ..\..\..\extras\audio\dsound.ec:678:7: error: couldn't determine type of (*dsbd.lpwfxFormat).nSamplesPerSec
   ..\..\..\extras\audio\dsound.ec:678:7: error: couldn't determine type of (*dsbd.lpwfxFormat).nSamplesPerSec
   ..\..\..\extras\audio\dsound.ec:678:7: error: couldn't determine type of (*dsbd.lpwfxFormat).nSamplesPerSec
   ..\..\..\extras\audio\dsound.ec:678:7: error: couldn't determine type of (*dsbd.lpwfxFormat).nSamplesPerSec = freq
   ..\..\..\extras\audio\dsound.ec:679:7: error: cannot dereference type
   ..\..\..\extras\audio\dsound.ec:679:7: error: couldn't determine type of *dsbd.lpwfxFormat
   ..\..\..\extras\audio\dsound.ec:679:7: error: couldn't determine type of (*dsbd.lpwfxFormat)
   ..\..\..\extras\audio\dsound.ec:679:7: error: member operator on non-structure type expression (*dsbd.lpwfxFormat).wBitsPerSample
   ..\..\..\extras\audio\dsound.ec:679:7: error: couldn't determine type of (*dsbd.lpwfxFormat).wBitsPerSample
   ..\..\..\extras\audio\dsound.ec:679:7: error: couldn't determine type of (*dsbd.lpwfxFormat).wBitsPerSample
   ..\..\..\extras\audio\dsound.ec:679:7: error: couldn't determine type of (*dsbd.lpwfxFormat).wBitsPerSample
   ..\..\..\extras\audio\dsound.ec:679:7: error: couldn't determine type of (*dsbd.lpwfxFormat).wBitsPerSample = (uint16)bits
   ..\..\..\extras\audio\dsound.ec:680:7: error: cannot dereference type
   ..\..\..\extras\audio\dsound.ec:680:7: error: couldn't determine type of *dsbd.lpwfxFormat
   ..\..\..\extras\audio\dsound.ec:680:7: error: couldn't determine type of (*dsbd.lpwfxFormat)
   ..\..\..\extras\audio\dsound.ec:680:7: error: member operator on non-structure type expression (*dsbd.lpwfxFormat).nBlockAlign
   ..\..\..\extras\audio\dsound.ec:680:7: error: couldn't determine type of (*dsbd.lpwfxFormat).nBlockAlign
   ..\..\..\extras\audio\dsound.ec:680:7: error: couldn't determine type of (*dsbd.lpwfxFormat).nBlockAlign
   ..\..\..\extras\audio\dsound.ec:680:39: error: cannot dereference type
   ..\..\..\extras\audio\dsound.ec:680:39: error: couldn't determine type of *dsbd.lpwfxFormat
   ..\..\..\extras\audio\dsound.ec:680:39: error: couldn't determine type of (*dsbd.lpwfxFormat)
   ..\..\..\extras\audio\dsound.ec:680:39: error: member operator on non-structure type expression (*dsbd.lpwfxFormat).nChannels
   ..\..\..\extras\audio\dsound.ec:680:69: error: cannot dereference type
   ..\..\..\extras\audio\dsound.ec:680:69: error: couldn't determine type of *dsbd.lpwfxFormat
   ..\..\..\extras\audio\dsound.ec:680:69: error: couldn't determine type of (*dsbd.lpwfxFormat)
   ..\..\..\extras\audio\dsound.ec:680:69: error: member operator on non-structure type expression (*dsbd.lpwfxFormat).wBitsPerSample
   ..\..\..\extras\audio\dsound.ec:680:39: error: couldn't determine type of (*dsbd.lpwfxFormat).nChannels
   ..\..\..\extras\audio\dsound.ec:680:39: error: couldn't determine type of (*dsbd.lpwfxFormat).wBitsPerSample
   ..\..\..\extras\audio\dsound.ec:680:39: error: couldn't determine type of (*dsbd.lpwfxFormat).nChannels * (*dsbd.lpwfxFormat).wBitsPerSample
   ..\..\..\extras\audio\dsound.ec:680:39: error: couldn't determine type of (*dsbd.lpwfxFormat).nChannels * (*dsbd.lpwfxFormat).wBitsPerSample / 8
   ..\..\..\extras\audio\dsound.ec:680:7: error: couldn't determine type of (*dsbd.lpwfxFormat).nBlockAlign
   ..\..\..\extras\audio\dsound.ec:680:7: error: couldn't determine type of (*dsbd.lpwfxFormat).nChannels * (*dsbd.lpwfxFormat).wBitsPerSample / 8
   ..\..\..\extras\audio\dsound.ec:680:7: error: couldn't determine type of (*dsbd.lpwfxFormat).nBlockAlign = (*dsbd.lpwfxFormat).nChannels * (*dsbd.lpwfxFormat).wBitsPerSample / 8
   ..\..\..\extras\audio\dsound.ec:681:7: error: cannot dereference type
   ..\..\..\extras\audio\dsound.ec:681:7: error: couldn't determine type of *dsbd.lpwfxFormat
   ..\..\..\extras\audio\dsound.ec:681:7: error: couldn't determine type of (*dsbd.lpwfxFormat)
   ..\..\..\extras\audio\dsound.ec:681:7: error: member operator on non-structure type expression (*dsbd.lpwfxFormat).nAvgBytesPerSec
   ..\..\..\extras\audio\dsound.ec:681:7: error: couldn't determine type of (*dsbd.lpwfxFormat).nAvgBytesPerSec
   ..\..\..\extras\audio\dsound.ec:681:7: error: couldn't determine type of (*dsbd.lpwfxFormat).nAvgBytesPerSec
   ..\..\..\extras\audio\dsound.ec:681:43: error: cannot dereference type
   ..\..\..\extras\audio\dsound.ec:681:43: error: couldn't determine type of *dsbd.lpwfxFormat
   ..\..\..\extras\audio\dsound.ec:681:43: error: couldn't determine type of (*dsbd.lpwfxFormat)
   ..\..\..\extras\audio\dsound.ec:681:43: error: member operator on non-structure type expression (*dsbd.lpwfxFormat).nSamplesPerSec
   ..\..\..\extras\audio\dsound.ec:681:78: error: cannot dereference type
   ..\..\..\extras\audio\dsound.ec:681:78: error: couldn't determine type of *dsbd.lpwfxFormat
   ..\..\..\extras\audio\dsound.ec:681:78: error: couldn't determine type of (*dsbd.lpwfxFormat)
   ..\..\..\extras\audio\dsound.ec:681:78: error: member operator on non-structure type expression (*dsbd.lpwfxFormat).nBlockAlign
   ..\..\..\extras\audio\dsound.ec:681:43: error: couldn't determine type of (*dsbd.lpwfxFormat).nSamplesPerSec
   ..\..\..\extras\audio\dsound.ec:681:43: error: couldn't determine type of (*dsbd.lpwfxFormat).nBlockAlign
   ..\..\..\extras\audio\dsound.ec:681:43: error: couldn't determine type of (*dsbd.lpwfxFormat).nSamplesPerSec * (*dsbd.lpwfxFormat).nBlockAlign
   ..\..\..\extras\audio\dsound.ec:681:7: error: couldn't determine type of (*dsbd.lpwfxFormat).nAvgBytesPerSec
   ..\..\..\extras\audio\dsound.ec:681:7: error: couldn't determine type of (*dsbd.lpwfxFormat).nSamplesPerSec * (*dsbd.lpwfxFormat).nBlockAlign
   ..\..\..\extras\audio\dsound.ec:681:7: error: couldn't determine type of (*dsbd.lpwfxFormat).nAvgBytesPerSec = (*dsbd.lpwfxFormat).nSamplesPerSec * (*dsbd.lpwfxFormat).nBlockAlign
   ..\..\..\extras\audio\dsound.ec:683:10: error: undefined class IDirectSound8
   ..\..\..\extras\audio\dsound.ec:683:10: error: couldn't determine type of (*this.pDS).lpVtbl
   ..\..\..\extras\audio\dsound.ec:683:10: error: couldn't determine type of *(*this.pDS).lpVtbl
   ..\..\..\extras\audio\dsound.ec:683:10: error: couldn't determine type of (*(*this.pDS).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:683:10: error: member operator on non-structure type expression (*(*this.pDS).lpVtbl).CreateSoundBuffer
   ..\..\..\extras\audio\dsound.ec:690:10: error: undefined class IDirectSoundBuffer
   ..\..\..\extras\audio\dsound.ec:690:10: error: couldn't determine type of (*(pDSBuffer)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:690:10: error: couldn't determine type of *(*(pDSBuffer)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:690:10: error: couldn't determine type of (*(*(pDSBuffer)).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:690:10: error: member operator on non-structure type expression (*(*(pDSBuffer)).lpVtbl).QueryInterface
   ..\..\..\extras\audio\dsound.ec:690:56: error: couldn't determine type of IID_IDirectSoundNotify
   ..\..\..\extras\audio\dsound.ec:690:56: error: couldn't determine type of &IID_IDirectSoundNotify
   ..\..\..\extras\audio\dsound.ec:702:24: error: couldn't find member dwOffset in class int
   ..\..\..\extras\audio\dsound.ec:702:10: error: couldn't determine type of aPosNotify[i].dwOffset
   ..\..\..\extras\audio\dsound.ec:702:10: error: couldn't determine type of aPosNotify[i].dwOffset
   ..\..\..\extras\audio\dsound.ec:702:10: error: couldn't determine type of aPosNotify[i].dwOffset = (dwNotifySize * i) + dwNotifySize - 1
   ..\..\..\extras\audio\dsound.ec:703:24: error: couldn't find member hEventNotify in class int
   ..\..\..\extras\audio\dsound.ec:703:10: error: couldn't determine type of aPosNotify[i].hEventNotify
   ..\..\..\extras\audio\dsound.ec:703:10: error: couldn't determine type of aPosNotify[i].hEventNotify
   ..\..\..\extras\audio\dsound.ec:703:10: error: couldn't determine type of aPosNotify[i].hEventNotify = hNotifyEvent
   ..\..\..\extras\audio\dsound.ec:706:10: error: undefined class IDirectSoundNotify
   ..\..\..\extras\audio\dsound.ec:706:10: error: couldn't determine type of (*(pDSNotify)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:706:10: error: couldn't determine type of *(*(pDSNotify)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:706:10: error: couldn't determine type of (*(*(pDSNotify)).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:706:10: error: member operator on non-structure type expression (*(*(pDSNotify)).lpVtbl).SetNotificationPositions
   ..\..\..\extras\audio\dsound.ec:709:13: error: undefined class IDirectSoundNotify
   ..\..\..\extras\audio\dsound.ec:709:13: error: couldn't determine type of (*(pDSNotify)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:709:13: error: couldn't determine type of *(*(pDSNotify)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:709:13: error: couldn't determine type of (*(*(pDSNotify)).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:709:13: error: member operator on non-structure type expression (*(*(pDSNotify)).lpVtbl).Release
   ..\..\..\extras\audio\dsound.ec:715:10: error: undefined class IDirectSoundNotify
   ..\..\..\extras\audio\dsound.ec:715:10: error: couldn't determine type of (*(pDSNotify)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:715:10: error: couldn't determine type of *(*(pDSNotify)).lpVtbl
   ..\..\..\extras\audio\dsound.ec:715:10: error: couldn't determine type of (*(*(pDSNotify)).lpVtbl)
   ..\..\..\extras\audio\dsound.ec:715:10: error: member operator on non-structure type expression (*(*(pDSNotify)).lpVtbl).Release
   ..\..\..\extras\audio\dsound.ec:749:7: warning: SetPriority undefined; assuming extern returning int
   ..\..\..\extras\audio\dsound.ec:749:19: error: unresolved identifier timeCritical
   ..\..\..\extras\audio\dsound.ec:753:13: error: unresolved identifier streamingSound; expected bool
   ..\..\..\extras\audio\dsound.ec:757:16: error: unresolved identifier streamingSound
   ..\..\..\extras\audio\dsound.ec:757:16: error: member operator on non-structure type expression streamingSound.FillBufferWithSound
   ..\..\..\extras\audio\dsound.ec:757:52: error: unresolved identifier streamingSound
   ..\..\..\extras\audio\dsound.ec:757:52: error: member operator on non-structure type expression streamingSound.GetBuffer
   ..\..\..\extras\audio\dsound.ec:757:83: error: unresolved identifier false
   ..\..\..\extras\audio\dsound.ec:758:16: error: unresolved identifier streamingSound
   ..\..\..\extras\audio\dsound.ec:758:16: error: member operator on non-structure type expression streamingSound.Play
   ..\..\..\extras\audio\dsound.ec:761:22: error: unresolved identifier streamingSound
   ..\..\..\extras\audio\dsound.ec:761:22: error: member operator on non-structure type expression streamingSound.HandleWaveStreamNotification

WavPlayer (Debug) - 808 errors, 4 warnings
                  
So should I still need to do the tweaks of #define and #undef?Or anything else I missed?

Thanks a lot.

Regards,
Sam
jerome
Site Admin
Posts: 608
Joined: Sat Jan 16, 2010 11:16 pm

Re: Adding additional include path lead to IDE crash

Post by jerome »

Hi Sam.

1. Additional Include Dirs -- I'm not sure I understand what doesn't work for you there? This is the Project Settings, Linker Tab, Addittional Library Directories?

What are you trying to do, and what doesn't work? You're doing this with the folder selection dialog? (The ... button?) . Make sure you press 'Select' after you've selected the folder you want to include in the dialog, not 'Ok' ( we need to improve the usability of this Folder dialog a bit ). Otherwise this works fine for me, please let me know what doesn't work for you.

2. You probably need to bring up some of your system volume controls or your speakers volume. It might be coming off through a different soundcard? (Embedded vs soundcard?) Headphones?

3. By WavePlayer sample, I assume you mean 'DirectBufferPlayer' ? This is a much more complex version of 'PlaySound' (they both play a single Wav file). The difference is that DirectBufferPlayer shows you how to directly write into the sound buffer (e.g. if you want to code your own mixer, as opposed to using the one provided in EcereAudio). DirectBufferPlayer is basically using an API a step lower.

Currently it's trying to compile EcereAudio with the files as the project, that's why you are running into these troubles. But the files are exactly the same as when you built EcereAudio itself. (You built it successfully before, right?) It's the exact same files.

It looks like right now you are trying to set the paths to a different DirectX than the one that is in sdk/deps/DirectX-9.0/include . I commented out line 232 of that file:

// typedef const WAVEFORMATEX *LPCWAVEFORMATEX;

If you point to the one in sdk/deps it should build fine.

Also I just pushed tweaks to that DirectBufferPlayer and EcereAudio, so that you can simply build the sample using EcereAudio, so you shouldn't have that issue anymore anyways.
Post Reply