返回首页

他,任何人都可以教我如何来解答complie时,我有仍然得到错误和其他链接错误的问题。
和我是一个编程初学者

在提前{S0的}感谢{S0的}


#include < windows.h >

#include < mmsystem.h >

#include < iostream >

#pragma comment (lib,"winmm.lib")

using namespace std;

 

int DeviceManager::getAudioInputVolumn( const std::string &deviceName )

{

 MMRESULT          rc;     

 HMIXER            hMixer; 

 MIXERLINE         mxl;    

 MIXERLINECONTROLS mxlc;   

 MIXERCONTROL      mxc;    

 

 for( int deviceID =0 ; true ; deviceID++ )

 {

   rc = mixerOpen(&hMixer,deviceID,0,0,MIXER_OBJECTF_MIXER);

 

  if( MMSYSERR_NOERROR!=rc )

  {

   break;

  }

 

  ZeroMemory(&mxl, sizeof(MIXERLINE));

 

  mxl.cbStruct = sizeof(MIXERLINE); 

  mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_WAVEIN;

 

  rc = mixerGetLineInfo((HMIXEROBJ)hMixer,

   &mxl,MIXER_OBJECTF_HMIXER|MIXER_GETLINEINFOF_COMPONENTTYPE);

  if( rc!=MMSYSERR_NOERROR )

  {

   continue;

  }

 

 

  DWORD   dwConnections   =   mxl.cConnections; 

  DWORD   dwLineID = -1; 

  for( DWORD i=0 ; i<dwconnections;>  { 

   mxl.dwSource = i;

   rc = mixerGetLineInfo((HMIXEROBJ)hMixer,&mxl,MIXER_OBJECTF_HMIXER|MIXER_GETLINEINFOF_SOURCE);

 

   if( MMSYSERR_NOERROR==rc )

   {  

    if( mxl.dwComponentType==MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE )

    { 

     dwLineID = mxl.dwLineID; 

     break; 

    }

   }

  } 

  if( dwLineID==-1 )

  { 

   continue;

  }

 

  ZeroMemory(&mxc, sizeof(MIXERCONTROL));

 

  mxc.cbStruct = sizeof(mxc); 

 

  ZeroMemory(&mxlc, sizeof(MIXERLINECONTROLS));

 

  mxlc.cbStruct = sizeof(mxlc); 

  mxlc.dwLineID = dwLineID; 

  mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;

  mxlc.cControls = 1;          

  mxlc.pamxctrl = &mxc;       

  mxlc.cbmxctrl = sizeof(mxc);

 

  rc = mixerGetLineControls((HMIXEROBJ)hMixer,&mxlc,MIXER_GETLINECONTROLSF_ONEBYTYPE);

 

  if (MMSYSERR_NOERROR == rc)

  {

   MIXERCONTROLDETAILS        mxcd;      

   MIXERCONTROLDETAILS_SIGNED volStruct; 

 

   ZeroMemory(&mxcd, sizeof(mxcd));

 

   mxcd.cbStruct = sizeof(mxcd);       

   mxcd.dwControlID = mxc.dwControlID; 

   mxcd.paDetails = &volStruct;        

   mxcd.cbDetails = sizeof(volStruct); 

   mxcd.cChannels = 1;                 

 

   rc = mixerGetControlDetails((HMIXEROBJ)hMixer,&mxcd,MIXER_GETCONTROLDETAILSF_VALUE);

 

   if (MMSYSERR_NOERROR == rc)

   {

    long step = ( mxc.Bounds.lMaximum - mxc.Bounds.lMinimum ) /100;

 

    int index = ( volStruct.lValue - mxc.Bounds.lMinimum) /step ;

    printf("volume:%X", volStruct.lValue);

    return index;

   }

  }

 }

 

 return -1;

}

回答

评论会员:游客 时间:2012/02/06
enhzflep:1。添加#includeLT;stdio.hgt;文件的顶部2。更改{C1的}codeprespanclass="code-keyword"int/spangetAudioInputVolumn(spanclass="code-keyword"const/spanstd::string&deviceName)/pre/code(3)更改{C3的}{的C4}它现在将编译,虽然不会链接,因为该程序没有入口点。4。添加一个或一个WinMain函数的代码
lijing123456
评论会员:游客 时间:2012/02/06
嗨,抱歉打扰您,我只是按照你的指示,现在它可以comile成功,但是当我点击调试窗口将被关闭,而不显示任何立即。在提前{S0的}感谢您的指示后,我常这样的代码:#包括LT;stdio.h中GT;#包括LT;WINDOWS.HGT;#包括LT;MMSYSTEM.HGT;#包括LT;iostream的GT;的#pragma注释(LIB,"WINMM.LIB")使用命名空间std;诠释的主要(){}INTgetAudioInputVolumn(常量的std::string的DeviceName){MMRESULTRC HMIXERhMixer;MIXERLINEMXL;MIXERLINECONTROLSmxlc;MIXERC​​ONTROLMXC;(诠释的DeviceID的DeviceID=0;真){RC=mixerOpen,MIXER_OBJECTF_MIXER"(hMixer的DeviceID,0,0);如果(MMSYSERR_NOERROR!=RC){打破;}ZeroMemory(MXLsizeof(MIXERLINE)的);mxl.cbStruct=SIZEOF(MIXERLINE)的mxl.dwComponentType=MIXERLINE_COMPONENTTYPE_DST_WAVEIN;RC=mixerGetLineInfo((HMIXEROBJ)hMixer",MXL,MIXER_OBJECTF_HMIXER的|MIXER_GETLINEINFOF_COMPONENTTYPE)如果(rc!=MMSYSERR_NOERROR){继续;}的DWORDdwConnections=mxl.cConnectionsDWORDdwLineID=-1;(DWORDI=0;传染性喉气管炎;dwconnections;)GT;mxl.dwSource=RC=mixerGetLineInfo((HMIXEROBJ)hMixer",MXL,MIXER_OBJECTF_HMIXER|MIXER_GETLINEINFOF_SOURCE)如果(MMSYSERR_NOERROR==RC){如果(mxl.dwComponentType==MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE){ dwLineID=mxl.dwLineID;打破; }}}如果(dwLineID==-1) {继续;}ZeroMemory(MXCsizeof(MIXERC​​ONTROL)的)mxc.cbStruct=sizeof(MXC)的ZeroMemory(mxlcsizeof(MIXERLINECONTROLS)的);mxlc.cbStruct=SIZEOF(mxlc)的mxlc.dwLineID=dwLineID;mxlc.dwControlType=MIXERC​​ONTROL_CONTROLTYPE_VOLUME;mxlc.cControls=1;mxlc.pamxctrl=MXC;mxlc.cbmxctrl=sizeof(MXC)的RC=mixerGetLineControls((HMIXEROBJ)hMixer,mxlc,MIXER_GETLINECONTROLSF_ONEBYTYPE)如果(MMSYSERR_NOERROR==RC){MIXERC​​ONTROLDETAILSmxcd;MIXERC​​ONTROLDETAILS_SIGNEDvolStruct;ZeroMemory(mxcdsizeof(mxcd)的); mxcd.cbStruct=SIZEOF(mxcd)的mxcd.dwControlID=mxc.dwControlID;mxcd.paDetails=volStruct;mxcd.cbDetails=SIZEOF(volStruct)的 mxcd.cChannels=1;RC=mixerGetControlDetails((HMIXEROBJ)hMixer,mxcd,MIXER_GETCONTROLDETAILSF_VALUE)如果(MMSYSERR_NOERROR==RC){ 长步=(mxc.Bounds.lMaximum-mxc.Bounds.lMinimum)/100;指数=(volStruct.lValue-mxc.Bounds.lMinimum)/步;printf("请量:%X"volStruct.lValue)返回指数;} }}返回-1;}|enhzflep
真正的恐怖,但是它产生一个精确的输出..

{C5的}