【问题标题】:Multimedia timer? <mmsystem.h>多媒体定时器? <mmsystem.h>
【发布时间】:2012-04-05 14:11:45
【问题描述】:

我正在尝试通过以下示例在 VS2008、Windows XP(最终是 Server 2008)上让这个准确的计时器工作:

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);
    }
    }
}

【问题讨论】:

    标签: c++ windows linker


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-01-22
            • 2020-08-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-03-25
            • 2021-07-11
            • 1970-01-01
            相关资源
            最近更新 更多