🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: be.comp.programming
6 messages
6 total messages Started by John Thu, 09 Oct 2003 09:56
MSVC++ 6.0 probleem.
#3938
Author: John
Date: Thu, 09 Oct 2003 09:56
27 lines
2229 bytes
Hallo,

Ik ben nieuw in Windows programmeren, dus alle hulp met het volgende
probleem is welkom.

Ik heb "Microsoft Visual C++ professional Edition 6.0" gebruikt om een
programma te geschreven. Dit programma speelt en opneemt geluid en doet een
paar eenvoudige mixer wijzigingen met gebruik van "Windows Multimedia API",
geen DirectX of dergelijke dus. Mijn MSVC++ is op een Windows 98 machine
ge�nstalleerd, en het programma werkt prima op deze machine. Als ik het
programma probeer op een Windows NT of XP computer krijg ik vreemde
problemen, bijvoorbeeld het programma hangt als ik geluid afspeel, of de
mixer wijzigingen zijn fout. Is dat normaal? Moet ik mijn programma apart
compileren voor elk operating systeem? Ik dacht dat als ik Windows API
gebruik, dan moet het goed werken op alle Windows OS's.

Ik heb geprobeerd mijn MSVC++ te instaleren op een NT of een XP machine om
op deze machine op nieuw te compileren maar die geeft fout melding bij het
starten, ik kan het programma dus niet op nieuw compileren op een van die
computers. Heeft iemand misschien een verklaring voor dit installatie
probleem?

Alvast bedankt voor alle antwoorden.

Groeten.

John
Re: MSVC++ 6.0 probleem.
#3939
Author: Luc Kumps
Date: Thu, 09 Oct 2003 10:18
23 lines
2160 bytes
John wrote:
> Ik heb geprobeerd mijn MSVC++ te instaleren op een NT of een XP
> machine om op deze machine op nieuw te compileren maar die geeft fout
> melding bij het starten, ik kan het programma dus niet op nieuw
> compileren op een van die computers. Heeft iemand misschien een
> verklaring voor dit installatie probleem?

De Win32 API (en aanverwanten) heeft grote gemeenschappelijke stukken op de
verschillende platformen, maar is zeker niet identiek. Je kunt bv. geen
"named pipe" maken op Win98.

Ik zou je willen aanraden om:

1. Ons een klein stukje code te tonen, waarmee de 'vreemde problemen' kunnen
gereproduceerd worden. Bv. een paar lijntjes waarin de API oproep, die
'vreemde problemen' veroorzaakt, uitgevoerd wordt.

2. Wat meer uitleg te geven. "Een foutmelding bij het starten" is zeer vaag.
Als je vertelt wat je precies geprobeerd hebt, en vooral wat de inhoud is
van 'een foutmelding' (er zijn er nu eenmaal een heleboel), dan is de kans
dat je geholpen wordt een stuk groter...

Luc K
Re: MSVC++ 6.0 probleem.
#3940
Author: John
Date: Thu, 09 Oct 2003 11:59
48 lines
3151 bytes
> John wrote:
> > Ik heb geprobeerd mijn MSVC++ te instaleren op een NT of een XP
> > machine om op deze machine op nieuw te compileren maar die geeft fout
> > melding bij het starten, ik kan het programma dus niet op nieuw
> > compileren op een van die computers. Heeft iemand misschien een
> > verklaring voor dit installatie probleem?
>
> De Win32 API (en aanverwanten) heeft grote gemeenschappelijke stukken op
de
> verschillende platformen, maar is zeker niet identiek. Je kunt bv. geen
> "named pipe" maken op Win98.
>
> Ik zou je willen aanraden om:
>
> 1. Ons een klein stukje code te tonen, waarmee de 'vreemde problemen'
kunnen
> gereproduceerd worden. Bv. een paar lijntjes waarin de API oproep, die
> 'vreemde problemen' veroorzaakt, uitgevoerd wordt.
>

De WaveOutXXX(), mixerSetControlDetails(), mixerGetControlDetails() APIs
zijn beschikbaar op alle Windows 32 versies. Ik heb ook een andere posting
gevonden die hetzelfde probleem beschrijft (iemand heeft mixer code
geschreven onder Win 2000 en de code gedraagt anders onder 98). De mixer
APIs in mijn geval werken ook op alle systemen, maar op sommige operating
systemen doen ze de juiste wijziging (het selecteren van een bepaald mixer
ingang) en op andere niet (hij selecteert iets anders). Ik heb dat met
verschillende sound cards getest.

> 2. Wat meer uitleg te geven. "Een foutmelding bij het starten" is zeer
vaag.
> Als je vertelt wat je precies geprobeerd hebt, en vooral wat de inhoud is
> van 'een foutmelding' (er zijn er nu eenmaal een heleboel), dan is de kans
> dat je geholpen wordt een stuk groter...

Foutmelding:
"The instruction at 0x00400270 referenced memory at 0x805b2588. The memory
could not be read"
Vergelijkbare foutmelding is gegeven als ik de IDE, de compiler, linker, of
nmake probeer te starten. Een paar van de andere tools (depends, Spy++)
werken goed. Ik heb trouwens ook de laatste service pack voor Visual Studio
6.0 ge�nstalleerd maar dat helpt niet.
Enig idee?

>
> Luc K
>
>
Re: MSVC++ 6.0 probleem.
#3941
Author: Luc Kumps
Date: Thu, 09 Oct 2003 12:43
61 lines
4032 bytes
John wrote:
>> John wrote:
>>> Ik heb geprobeerd mijn MSVC++ te instaleren op een NT of een XP
>>> machine om op deze machine op nieuw te compileren maar die geeft
>>> fout melding bij het starten, ik kan het programma dus niet op nieuw
>>> compileren op een van die computers. Heeft iemand misschien een
>>> verklaring voor dit installatie probleem?
>>
>> De Win32 API (en aanverwanten) heeft grote gemeenschappelijke
>> stukken op de verschillende platformen, maar is zeker niet identiek.
>> Je kunt bv. geen "named pipe" maken op Win98.
>>
>> Ik zou je willen aanraden om:
>>
>> 1. Ons een klein stukje code te tonen, waarmee de 'vreemde
>> problemen' kunnen gereproduceerd worden. Bv. een paar lijntjes
>> waarin de API oproep, die 'vreemde problemen' veroorzaakt,
>> uitgevoerd wordt.
>>
>
> De WaveOutXXX(), mixerSetControlDetails(), mixerGetControlDetails()
> APIs zijn beschikbaar op alle Windows 32 versies. Ik heb ook een
> andere posting gevonden die hetzelfde probleem beschrijft (iemand
> heeft mixer code geschreven onder Win 2000 en de code gedraagt anders
> onder 98). De mixer APIs in mijn geval werken ook op alle systemen,
> maar op sommige operating systemen doen ze de juiste wijziging (het
> selecteren van een bepaald mixer ingang) en op andere niet (hij
> selecteert iets anders). Ik heb dat met verschillende sound cards
> getest.

Nogmaals, een stukje code zou helpen.
Anders moeten we in het blinde weg vragen stellen, zoals 'je hebt toch wel
je MIXERCONTROLDETAILS structuur volledig op 0 ge�nitialiseerd?'

>> 2. Wat meer uitleg te geven. "Een foutmelding bij het starten" is
>> zeer vaag. Als je vertelt wat je precies geprobeerd hebt, en vooral
>> wat de inhoud is van 'een foutmelding' (er zijn er nu eenmaal een
>> heleboel), dan is de kans dat je geholpen wordt een stuk groter...
>
> Foutmelding:
> "The instruction at 0x00400270 referenced memory at 0x805b2588. The
> memory could not be read"

Heb je dit al op meer dan ��n Win2K systeem geprobeerd? Ben je administrator
op die machine? Is er zeker genoeg disk space?
Probeer misschien eens in een 'stomme' VGA resolutie (bv. 640x400), of met
zo weinig mogelijk andere programma's (bv. virus check) draaiend terwijl je
installeert.

Je bent alleszins niet alleen, op 16 juli 2000 heeft ene "Tony Wang"
(tonywtao@hotmail.com) dit gepost:
I'm a beginner of VS, After set-up Visual Studio 60. on Windows2000
professional Edition, all materials are working properly except VC++, when I
start-up VC++ I get the following error:
The instruction at "0x00400270" referenced memory at "0x805b2588", the
memory could not be read!
What does this message mean and how to resolve it?
I'll be very appreciate for your suggestions.Jammer genoeg is daar nooit een
reactie op gekomen...

Luc K
Re: MSVC++ 6.0 probleem.
#3825
Author: John
Date: Sun, 12 Oct 2003 10:30
249 lines
10183 bytes
Luc,

Bedankt voor uw antwoord.

Ik heb inmiddels het installatie probleem opgelost door de werkende
executables gewoon te kopi�ren naar de XP machine. Nu de ontwikkeling
omgeving doet het op de XP machine, maar het programma gedraagt hetzelfde.

Onderaan is een stukje code om de microfoon te selecteren als opname ingang.
Op 98 en NT dat werkt prima. Op een XP machine, de geselecteerde ingang is
onjuist. Ik heb gemerkt dat als ik 7 ingangen heb (index 0 t/m 6), en de mic
ingang is de tweede (index 1), dan wordt de 6de ingang (index 5)
geselecteerd. Na een beetje debuggen nu weet ik zeker dat de volgorde van de
ingangen zijn omgekeerd. Dus als index i wordt met de code geselecteerd, de
driver selecteert (mixerDestLine.cConnections - i).

// BEGIN CODE
  UINT nNumMixers;
  HMIXER hMixer = NULL;
  MIXERCAPS mxcaps;

  nNumMixers = ::mixerGetNumDevs();
  if (nNumMixers < 1){return false;}
  ::ZeroMemory(&mxcaps, sizeof(MIXERCAPS));

  ret = mixerOpen(&hMixer, (UINT)m_hWaveIn, NULL, NULL,
MIXER_OBJECTF_HWAVEIN);

  if (ret == MMSYSERR_NOERROR)
  {
   if (::mixerGetDevCaps(reinterpret_cast<UINT>(hMixer), &mxcaps,
sizeof(MIXERCAPS))
    != MMSYSERR_NOERROR)
   {
    return FALSE;
   }

   // Get mixer recording dest line.
   MIXERLINE mixerDestLine;
   UINT nDistnations = mxcaps.cDestinations;
   UINT waveInDistIndex;
   for (UINT i=0; i< nDistnations; i++){
    memset(&mixerDestLine, 0, sizeof(MIXERLINE));
    mixerDestLine.cbStruct = sizeof(MIXERLINE);
    mixerDestLine.dwDestination = i;
    mixerDestLine.dwSource = 0;
    ret = mixerGetLineInfo ((HMIXEROBJ)hMixer, &mixerDestLine,
MIXER_GETLINEINFOF_DESTINATION);
    if (ret == MMSYSERR_NOERROR){
     if (mixerDestLine.dwComponentType ==
MIXERLINE_COMPONENTTYPE_DST_WAVEIN){
      waveInDistIndex = i;
      break;
     }
    }
   }

   memset(&mixerDestLine, 0, sizeof(MIXERLINE));
   mixerDestLine.cbStruct = sizeof(MIXERLINE);
   mixerDestLine.dwDestination = waveInDistIndex;
   mixerDestLine.dwSource = 0;
   mixerDestLine.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_WAVEIN ;

   ret = mixerGetLineInfo
   (
    (HMIXEROBJ)hMixer,
    &mixerDestLine,
    MIXER_GETLINEINFOF_DESTINATION
   );

   if (ret == MMSYSERR_NOERROR)
   {
    // Enumerate mixer recording source lines.
    UINT srcConnection = 0;
    MIXERLINE mixerSrcLine;

    for (; srcConnection < mixerDestLine.cConnections; srcConnection++)
    {
     memset(&mixerSrcLine, 0, sizeof(MIXERLINE));
     mixerSrcLine.cbStruct = sizeof(MIXERLINE);
     mixerSrcLine.dwDestination = waveInDistIndex;
     mixerSrcLine.dwSource = srcConnection;

     ret = mixerGetLineInfo
     (
      (HMIXEROBJ)hMixer,
      &mixerSrcLine,
      MIXER_GETLINEINFOF_SOURCE
     );

     if (mixerSrcLine.dwComponentType ==
MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE)
     {

      // Try MUX control type

      ////////////////////////
      MIXERCONTROL mixerRecControl;
      memset(&mixerRecControl, 0, sizeof(MIXERCONTROL));
      mixerRecControl.cbStruct = sizeof(MIXERCONTROL);

      MIXERLINECONTROLS mixerRecLineControls;
      memset(&mixerRecLineControls, 0, sizeof(MIXERLINECONTROLS));
      mixerRecLineControls.cbStruct  = sizeof(MIXERLINECONTROLS);
      mixerRecLineControls.dwLineID  = mixerDestLine.dwLineID;
      mixerRecLineControls.dwControlType = MIXERCONTROL_CONTROLTYPE_MUX;
      mixerRecLineControls.cControls = 1;
      mixerRecLineControls.pamxctrl  = &mixerRecControl;
      mixerRecLineControls.cbmxctrl  = sizeof(MIXERCONTROL);

      ret = mixerGetLineControls
      (
       (HMIXEROBJ)hMixer,
       &mixerRecLineControls,
       MIXER_GETLINECONTROLSF_ONEBYTYPE
      );

      if (ret != MMSYSERR_NOERROR){
       // Try MIXER
       memset(&mixerRecControl, 0, sizeof(MIXERCONTROL));
       mixerRecControl.cbStruct = sizeof(MIXERCONTROL);

       MIXERLINECONTROLS mixerRecLineControls;
       memset(&mixerRecLineControls, 0, sizeof(MIXERLINECONTROLS));
       mixerRecLineControls.cbStruct  = sizeof(MIXERLINECONTROLS);
       mixerRecLineControls.dwLineID  = mixerDestLine.dwLineID;
       mixerRecLineControls.dwControlType = MIXERCONTROL_CONTROLTYPE_MIXER;
       mixerRecLineControls.cControls = 1;
       mixerRecLineControls.pamxctrl  = &mixerRecControl;
       mixerRecLineControls.cbmxctrl  = sizeof(MIXERCONTROL);
       ret = mixerGetLineControls
       (
        (HMIXEROBJ)hMixer,
        &mixerRecLineControls,
        MIXER_GETLINECONTROLSF_ONEBYTYPE
       );
      }
      if (ret == MMSYSERR_NOERROR)
      {
       MIXERCONTROLDETAILS mixerControlDetails;
       mixerControlDetails.cbStruct    = sizeof(MIXERCONTROLDETAILS);
       mixerControlDetails.dwControlID =
mixerRecLineControls.pamxctrl->dwControlID;
       mixerControlDetails.cMultipleItems = mixerDestLine.cConnections;
       mixerControlDetails.cChannels = mixerDestLine.cChannels;

       UINT BooleanArraySize = mixerControlDetails.cMultipleItems *
sizeof(MIXERCONTROLDETAILS_BOOLEAN);
       LPMIXERCONTROLDETAILS_BOOLEAN BooleanArray = new
MIXERCONTROLDETAILS_BOOLEAN[mixerControlDetails.cMultipleItems];

       if (BooleanArray)
       {
        memset(BooleanArray, 0, BooleanArraySize);
        BooleanArray[srcConnection].fValue = 1;
        mixerControlDetails.cbDetails = BooleanArraySize;
        mixerControlDetails.paDetails = BooleanArray;

        ret = mixerSetControlDetails
        (
         (HMIXEROBJ)hMixer,
         &mixerControlDetails,
         MIXER_SETCONTROLDETAILSF_VALUE
        );
        delete BooleanArray;
       }
      }

      if (ret != MMSYSERR_NOERROR)
       AfxMessageBox("Could not set the microphone as recording source.
Please do that manually from Windows mixer application.");
      break;
     }
    }
   }

   ret = mixerClose(hMixer);
  }
 }
// END CODE
"Luc Kumps" <NOkumpsSPAM@pandora.be> schreef in bericht
news:YJchb.67791$Wm5.3454003@phobos.telenet-ops.be...
> John wrote:
> >> John wrote:
> >>> Ik heb geprobeerd mijn MSVC++ te instaleren op een NT of een XP
> >>> machine om op deze machine op nieuw te compileren maar die geeft
> >>> fout melding bij het starten, ik kan het programma dus niet op nieuw
> >>> compileren op een van die computers. Heeft iemand misschien een
> >>> verklaring voor dit installatie probleem?
> >>
> >> De Win32 API (en aanverwanten) heeft grote gemeenschappelijke
> >> stukken op de verschillende platformen, maar is zeker niet identiek.
> >> Je kunt bv. geen "named pipe" maken op Win98.
> >>
> >> Ik zou je willen aanraden om:
> >>
> >> 1. Ons een klein stukje code te tonen, waarmee de 'vreemde
> >> problemen' kunnen gereproduceerd worden. Bv. een paar lijntjes
> >> waarin de API oproep, die 'vreemde problemen' veroorzaakt,
> >> uitgevoerd wordt.
> >>
> >
> > De WaveOutXXX(), mixerSetControlDetails(), mixerGetControlDetails()
> > APIs zijn beschikbaar op alle Windows 32 versies. Ik heb ook een
> > andere posting gevonden die hetzelfde probleem beschrijft (iemand
> > heeft mixer code geschreven onder Win 2000 en de code gedraagt anders
> > onder 98). De mixer APIs in mijn geval werken ook op alle systemen,
> > maar op sommige operating systemen doen ze de juiste wijziging (het
> > selecteren van een bepaald mixer ingang) en op andere niet (hij
> > selecteert iets anders). Ik heb dat met verschillende sound cards
> > getest.
>
> Nogmaals, een stukje code zou helpen.
> Anders moeten we in het blinde weg vragen stellen, zoals 'je hebt toch wel
> je MIXERCONTROLDETAILS structuur volledig op 0 ge�nitialiseerd?'
>
> >> 2. Wat meer uitleg te geven. "Een foutmelding bij het starten" is
> >> zeer vaag. Als je vertelt wat je precies geprobeerd hebt, en vooral
> >> wat de inhoud is van 'een foutmelding' (er zijn er nu eenmaal een
> >> heleboel), dan is de kans dat je geholpen wordt een stuk groter...
> >
> > Foutmelding:
> > "The instruction at 0x00400270 referenced memory at 0x805b2588. The
> > memory could not be read"
>
> Heb je dit al op meer dan ��n Win2K systeem geprobeerd? Ben je
administrator
> op die machine? Is er zeker genoeg disk space?
> Probeer misschien eens in een 'stomme' VGA resolutie (bv. 640x400), of met
> zo weinig mogelijk andere programma's (bv. virus check) draaiend terwijl
je
> installeert.
>
> Je bent alleszins niet alleen, op 16 juli 2000 heeft ene "Tony Wang"
> (tonywtao@hotmail.com) dit gepost:
> I'm a beginner of VS, After set-up Visual Studio 60. on Windows2000
> professional Edition, all materials are working properly except VC++, when
I
> start-up VC++ I get the following error:
> The instruction at "0x00400270" referenced memory at "0x805b2588", the
> memory could not be read!
> What does this message mean and how to resolve it?
> I'll be very appreciate for your suggestions.Jammer genoeg is daar nooit
een
> reactie op gekomen...
>
> Luc K
>
>
Re: MSVC++ 6.0 probleem.
#3828
Author: Luc Kumps
Date: Sun, 12 Oct 2003 17:29
26 lines
2112 bytes
John wrote:
> Onderaan is een stukje code om de microfoon te selecteren als opname
> ingang. Op 98 en NT dat werkt prima. Op een XP machine, de
> geselecteerde ingang is onjuist. Ik heb gemerkt dat als ik 7 ingangen
> heb (index 0 t/m 6), en de mic ingang is de tweede (index 1), dan
> wordt de 6de ingang (index 5) geselecteerd. Na een beetje debuggen nu
> weet ik zeker dat de volgorde van de ingangen zijn omgekeerd. Dus als
> index i wordt met de code geselecteerd, de driver selecteert
> (mixerDestLine.cConnections - i).

Heb je andere software die WEL goed draait op de XP machine?
Of zou het stomweg een driverprobleem kunnen zijn?
Misschien zit er wel een bug in de driver op XP?

Ik kan je wel zeggen dat je

  delete BooleanArray;

moet vervangen door

 delete [] BooleanArray;

(al maakt dat met MS VC weinig uit, 't is maar om de C++ standaard te volgen
;-))

Luc K
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads