[VC++] DirectSound probleem

Pagina: 1
Acties:

  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 06:17
Ben dus net van start gegaan met VC++ en tot nu toe viel alles me alleszins mee, maar zoals te verwachten loop ik nu toch ff enorm vast. Ongetwijfeld een belachelijk simpel probleem voor de kenner, maar ik kom er echt totaal niet uit. Googlen naar de errormessage en op dit forum rondzoeken zorgde ook niet voor het beoogde resultaat, dus bij deze ;) .


Het doel: een wav file afspelen mbv DirectSound.


De foutmeldingen:

.\Tunemaker.cpp(35) : error C2691: 'Microsoft::DirectX::DirectSound::EffectsReturnValue' : a managed array cannot have this element type
This diagnostic occurred while importing type 'Microsoft::DirectX::DirectSound::SecondaryBuffer ' from assembly 'Microsoft.DirectX.DirectSound, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
.\Tunemaker.cpp(35) : error C2691: 'Microsoft::DirectX::DirectSound::EffectsReturnValue' : a managed array cannot have this element type
This diagnostic occurred while importing type 'Microsoft::DirectX::DirectSound::SecondaryBuffer ' from assembly 'Microsoft.DirectX.DirectSound, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
.\Tunemaker.cpp(35) : error C3767: 'Microsoft::DirectX::DirectSound::SecondaryBuffer::SecondaryBuffer': candidate function(s) not accessible
.\Tunemaker.cpp(36) : error C2039: 'Play' : is not a member of 'Microsoft::DirectX::DirectSound::SecondaryBuffer'
c:\windows\microsoft.net\directx for managed code\1.0.2902.0\microsoft.directx.directsound.dll : see declaration of 'Microsoft::DirectX::DirectSound::SecondaryBuffer'

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include "stdafx.h"

#using <mscorlib.dll>
#using <System.dll>
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>
#using <System.Windows.Forms.dll>

using namespace System;
using namespace System::ComponentModel;
using namespace System::Windows::Forms;
using namespace System::Drawing;

using namespace Microsoft::DirectX;
using namespace Microsoft::DirectX::DirectSound;



__gc public class CppForm: public Form
{

private: Button* btn1;
private: ComboBox* combo1;

Device *sDevice;
Microsoft::DirectX::DirectSound::SecondaryBuffer *buffer;

private:

    void Btn1_Clicked (Object* pSender, EventArgs* pArgs){
        buffer= new Microsoft::DirectX::DirectSound::SecondaryBuffer("bla.wav",sDevice);
        buffer->Play(0,BufferPlayFlags::Default);
    };


public:
    CppForm(){
        Text=S"Test";
        sDevice=new Device();
        initComponents();
    };

public:
    Button* addButton(System::String __gc *caption, int left, int top, int width , int height){
        Button* tempbutton;
        tempbutton=new Button();
        tempbutton->Text=caption;
        tempbutton->Location=Point(left,top);
        tempbutton->Size=System::Drawing::Size(width,height);

        Controls->Add(tempbutton);

        return tempbutton;
    }


    private: 
    void initComponents(){

        btn1=addButton("test",100,100,100,100);
        btn1->Click+=new EventHandler(this, &CppForm::Btn1_Clicked);

        combo1=new ComboBox();
        combo1->DropDownStyle=ComboBoxStyle::DropDownList;
        combo1->Location=Point(20,20);
        combo1->Items->Add(S"test");
        Controls->Add(combo1);


    }




};




int _tmain()
{
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false); 
    Application::Run(new CppForm());
    

    return 0;
}


Het probleem zit hem dus in wanneer ik een SecondaryBuffer probeer aan te maken, maar ik heb werkelijk geen idee wat ik verkeerd doe.


------


edit: Ongelofelijk, na tijden lang te hebben gekloot en uiteindelijk helemaal een topic te hebben aangemaakt vind je natuurlijk binnen notime het probleem.

Had de verkeerde Microsoft.DirectX bij de References gezet. Er waren twee verschillende versies.

[ Voor 8% gewijzigd door BarôZZa op 20-04-2006 16:47 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Zo op het eerste gezicht lijkt de fout in de assembly te zitten, en niet zozeer in je code. Versie mismatch misschien? .edit: ja dus :P

Mag ik vragen waarom je er eigenlijk voor kiest om het in (inmiddels obsolete) Managed C++ te doen?

[ Voor 11% gewijzigd door .oisyn op 20-04-2006 16:49 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 06:17
Is dus al gefixt.

En keuze? Die heb je niet op het hbo ;)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

OMG je gaat toch niet vertellen dat ze je daar managed C++ aanleren he? 8)7
Of gebruiken ze gewoon VC++ 7.x voor C++ en gebruik jij gewoon managed code?

[ Voor 35% gewijzigd door .oisyn op 20-04-2006 16:51 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 06:17
Dan vertel ik je wel, maar is nog maar het tweede project. Hopelijk verbetert het nog, het vorige project was helemaal triest. Java waarbij we de gehele hardwareaansturing(het interessante gedeelte dus :/ ) aangeleverd kregen en zelf wat databasejes mochten maken.

Ik heb er zelf ook nog niet veel verstand van C++, dus weet alle verschillen nog niet echt. Weet wel dat het strontirritant is dat we niet gebruik mogen maken van de grafische editor om de GUI in elkaar te zetten.

Oja, dit is dus trouwens de opleiding Technische Informatica op een school die in de top 3 schijnt te staan van Nederlandse HBO informatica opleidingen.

[ Voor 14% gewijzigd door BarôZZa op 20-04-2006 17:00 ]


Verwijderd

Ik volg ook de opleiding Technische Informatica maar databasejes maken krijgen wij gelukkig niet, wij maken veelvuldig gebruik van een grafische editor om makkelijk een interface mee te ontwikkelen. Maar hardwarebesturing lijkt me juist het meest logische om te programmeren als je TI doet. :)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Nou ja op zich maakt het ook niet uit wat voor taal je gebruikt, je leert immers gewoon programmeren. Maar ik vind het enigszins lomp dat ze je een taal aanleren die A) crappy in elkaar zit en B ) obsolete is, en dat dan ook nog eens verkopen onder de noemer "C++" wat het gewoon niet is.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • --WaaZaa--
  • Registratie: Oktober 2004
  • Laatst online: 13-02 08:05
Hee Patrick :>

De reden dat ze ons nu VC++.net aanleren is omdat ze denken dat het vrij veel op Java lijkt, en laten wij dat de vorige 3 kwartalen nou gedaan hebben. Bovendien kiezen ze voor een managed iets omdat ze denken dat het makkelijker is voor ons om zonder pointers etc te werken, wat ik me eigenlijk erg goed voor kan stellen. Vandaag hebben we een korte intro pointers gehad, maar erg veel kon ik er (nog) niet van snappen. Maar coden & theorie vinnik nog steeds een slechte combinatie.

Owja nog een reden: het boek neemt de docenten veel werk uit handen.

Maareuh Patrick, je doet er goed aan om gewoon VS 2003 te downloaden van BB en die te gebruiken, daar gaat het boek vanuit en de opdrachten ook. Liep eerst ook tegen deze dingen aan. Grootste probleem is nl dat vs 2005 uitgaat van .netFramework v2 en 2003 van 1.7 oid. In .net v2 kon ik DX nergens vinden :S

prutsert


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Mja, domme keuze imho, neem dan gewoon C# óf C++/CLI (VC++ 2005 ondersteunt dat), dat zit een stuk degelijker in elkaar. Het managed C++ wat jullie nu leren heeft in feite maar 3 jaar bestaan, en nu is het obsolete door de komst van C++/CLI :).

Maar goed, VS 2005 is er maar pas, kan me voorstellen dat het even duurt voordat de lesstof ook is aangepast.

[ Voor 19% gewijzigd door .oisyn op 21-04-2006 01:20 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 06:17
--WaaZaa-- schreef op donderdag 20 april 2006 @ 23:53:
Hee Patrick :>

De reden dat ze ons nu VC++.net aanleren is omdat ze denken dat het vrij veel op Java lijkt, en laten wij dat de vorige 3 kwartalen nou gedaan hebben. Bovendien kiezen ze voor een managed iets omdat ze denken dat het makkelijker is voor ons om zonder pointers etc te werken, wat ik me eigenlijk erg goed voor kan stellen. Vandaag hebben we een korte intro pointers gehad, maar erg veel kon ik er (nog) niet van snappen. Maar coden & theorie vinnik nog steeds een slechte combinatie.

Owja nog een reden: het boek neemt de docenten veel werk uit handen.

Maareuh Patrick, je doet er goed aan om gewoon VS 2003 te downloaden van BB en die te gebruiken, daar gaat het boek vanuit en de opdrachten ook. Liep eerst ook tegen deze dingen aan. Grootste probleem is nl dat vs 2005 uitgaat van .netFramework v2 en 2003 van 1.7 oid. In .net v2 kon ik DX nergens vinden :S
De into's waren simple as hell. Daarnaast vind ik in grote lijnen alle programmeertalen op elkaar lijken. Het gaat meer om de logica erachter dan het verschil in syntax.

Voor de rest werkt 2005 gewoon goed trouwens, vind het zelf vrij nutteloos om een verouderde versie te leren. Voor de rest is het dus vrij simpel allemaal, maar je boekt wel snel wat leuke resultaten.

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 13-12-2024
--WaaZaa-- schreef op donderdag 20 april 2006 @ 23:53:
Hee Patrick :>

De reden dat ze ons nu VC++.net aanleren is omdat ze denken dat het vrij veel op Java lijkt, en laten wij dat de vorige 3 kwartalen nou gedaan hebben. Bovendien kiezen ze voor een managed iets omdat ze denken dat het makkelijker is voor ons om zonder pointers etc te werken, wat ik me eigenlijk erg goed voor kan stellen. Vandaag hebben we een korte intro pointers gehad, maar erg veel kon ik er (nog) niet van snappen. Maar coden & theorie vinnik nog steeds een slechte combinatie.
Volgens mij lijkt C# veel meer op java (is zo'n beetje een kopie van) en dat je geen pointers hoeft te gebruiken is wel makkelijk idd, maar volgens mij is dat ook de kracht van C++ (dat je meer controle hebt + directe hardware aansturing) correct me if i'm wrong... (ik kan geen C++, wel java en C#)

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...

Pagina: 1