Thread View: be.comp.programming
6 messages
6 total messages
Started by John
Thu, 09 Oct 2003 09:56
MSVC++ 6.0 probleem.
Author: John
Date: Thu, 09 Oct 2003 09:56
Date: Thu, 09 Oct 2003 09:56
27 lines
2229 bytes
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.
Author: Luc Kumps
Date: Thu, 09 Oct 2003 10:18
Date: Thu, 09 Oct 2003 10:18
23 lines
2160 bytes
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.
Author: John
Date: Thu, 09 Oct 2003 11:59
Date: Thu, 09 Oct 2003 11:59
48 lines
3151 bytes
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.
Author: Luc Kumps
Date: Thu, 09 Oct 2003 12:43
Date: Thu, 09 Oct 2003 12:43
61 lines
4032 bytes
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.
Author: John
Date: Sun, 12 Oct 2003 10:30
Date: Sun, 12 Oct 2003 10:30
249 lines
10183 bytes
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.
Author: Luc Kumps
Date: Sun, 12 Oct 2003 17:29
Date: Sun, 12 Oct 2003 17:29
26 lines
2112 bytes
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