多媒体计时器<MMSYSTEM.H> </MMSYSTEM.H>

时间:2012-04-05 14:11:46

标签: c++ windows linker

我试图通过以下示例在Windows XP(以及最终的Server 2008)上使VS2008上运行这个准确的计时器:

http://technology.chtsai.org/w98timer/

但是我收到以下错误:

  • 错误LNK2019:未解析的外部符号_ imp _timeEndPeriod @ 4
  • 错误LNK2019:未解析的外部符号_ imp _timeGetTime @ 0
  • 错误LNK2019:未解析的外部符号_ imp _timeBeginPeriod @ 4
  • 错误LNK2019:未解析的外部符号_ imp _timeGetDevCaps @ 8

有人可以建议吗?

我只想在Windows上使用简单,准确,毫秒级的C ++示例。

#include <stdio.h>
#include <windows.h>
#include <mmsystem.h>
#include "stdafx.h"

void 
main (void)
{
  TIMECAPS resolution;
  DWORD start, finish, duration, i;

  if (timeGetDevCaps (&resolution, sizeof (TIMECAPS)) == TIMERR_NOERROR)
    {
      printf ("Minimum supported resolution = %d\n", resolution.wPeriodMin);
      printf ("Maximum supported resolution = %d\n", resolution.wPeriodMax);
    }

  if (resolution.wPeriodMin <= 1)
    {
      if (timeBeginPeriod (1) == TIMERR_NOERROR)
    {
      for (i = 100; i <= 120; i++)
        {
          start = timeGetTime ();
          while (timeGetTime () < (start + i));
          finish = timeGetTime ();
          duration = finish - start;
          printf ("expected:%d  actual:%ld\n", i, duration);
        }
      timeEndPeriod (1);
    }
    }
}

4 个答案:

答案 0 :(得分:2)

作为MSDN suggests,您需要在项目中加入winmm.lib。因此,在源代码中的任何位置添加以下行:

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

答案 1 :(得分:1)

查看docs,您需要将Winmm.lib添加到要在项目属性中链接的其他库中。

答案 2 :(得分:1)

您需要将winmm.lib添加到链接器依赖项。

答案 3 :(得分:1)

这些函数在winmm.dll中定义。您需要将winmm.lib添加到链接列表中。