「未解決の外部シンボル __imp__timeSetEvent@20 が関数 xxxx で参照されました。」エラーの対処法

Win32APIのタイマーを使用したプログラムをコンパイルすると以下のエラーが出る場合があります。

未解決の外部シンボル __imp__timeSetEvent@20 が関数 xxxx で参照されました。


英語環境だと以下のメッセージになります。
error LNK2019: unresolved external symbol __imp__timeSetEvent@20 referenced in function xxxx

これは、timeSetEvent()関数がライブラリwinmm.libで定義されているのですが、ライブラリがプロジェクトに登録されていない事が原因です。



対処法は、プログラムの先頭に以下のpragma命令を書きます。
これによってwinmm.libがリンクされるのでエラーが出なくなります。
#pragma comment(lib, "winmm.lib")	// winmm.libを使用する




pragma命令による指定ではなくプロジェクトの設定でwinmm.libを登録する事も可能です。
プロジェクトのプロパティより、構成プロパティ->リンカ->入力にある、追加の依存ファイルでwinmm.libを指定してください。
指定するライブラリは、手元の環境だと以下のフォルダにありました。
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\x64

Visual Studio 2010 スタートアップガイド

おすすめ記事

カテゴリ別RSS配信中!!

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">