プロが教える店舗&オフィスのセキュリティ対策術

Microsoft Visual Studio 12.0 の VC フォルダにある C 言語環境をコマンドプロンプト画面で操作している者です。お世話になります。
GUI プログラムなるものを目の当たりにしたく、下記を見付けました。「空白のウィンドウを作成して、表示させます」とのこと、興味津々です。
https://msdn.microsoft.com/ja-jp/library/ff38140 …
掲載コードをコピペして m1.cpp なるファイルにし、>cl m1.cpp をしたのですが、下記のごときエラーが出ます。
エラーをなくすにはどうしたらよいか、宜しくお願いいたします。

m1.cpp
Microsoft (R) Incremental Linker Version 12.00.31101.0
Copyright (C) Microsoft Corporation. All rights reserved.

/out:m1.exe
m1.obj
m1.obj : error LNK2019: 未解決の外部シンボル __imp__GetMessageW@16 が関数 _wWinMain@16 で参照されました。
m1.obj : error LNK2019: 未解決の外部シンボル __imp__TranslateMessage@4 が関数 _wWinMain@16 で参照されました。
m1.obj : error LNK2019: 未解決の外部シンボル __imp__DispatchMessageW@4 が関数 _wWinMain@16 で参照されました。
m1.obj : error LNK2019: 未解決の外部シンボル __imp__DefWindowProcW@16 が関数 "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
m1.obj : error LNK2019: 未解決の外部シンボル __imp__PostQuitMessage@4 が関数 "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
m1.obj : error LNK2019: 未解決の外部シンボル __imp__RegisterClassW@4 が関数 _wWinMain@16 で参照されました。
m1.obj : error LNK2019: 未解決の外部シンボル __imp__CreateWindowExW@48 が関数 _wWinMain@16 で参照されました。
m1.obj : error LNK2019: 未解決の外部シンボル __imp__ShowWindow@8 が関数 _wWinMain@16 で参照されました。
m1.obj : error LNK2019: 未解決の外部シンボル __imp__BeginPaint@8 が関数 "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
m1.obj : error LNK2019: 未解決の外部シンボル __imp__EndPaint@8 が関数 "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
m1.obj : error LNK2019: 未解決の外部シンボル __imp__FillRect@12 が関数 "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
m1.exe : fatal error LNK1120: 11 件の未解決の外部参照

A 回答 (2件)

Visual Studio使っているなら、普通にプロジェクト(ソリューション)作成してやった方が楽なんですけどね。



>error LNK2019: 未解決の外部シンボル __imp__GetMessageW@16 が関数 _wWinMain@16 で参照されました。

リンクするライブラリも指定してください。
cl なんちゃら.cppでお気楽にやる…ってのならば、必要な環境変数設定しないと駄目かと思われます。
# そんなのやるくらいならプロジェクト(ソリューション)にした方がいろいろと楽…なんですけど。
# https://msdn.microsoft.com/ja-jp/library/f2ccy3w …
# 「Visual C++ コマンド ライン ツールでは、PATH、TMP、INCLUDE、LIB、および LIBPATH 環境変数が使用されます。」って書かれてます。今回の場合はLIBでしょうかねぇ。

とりあえず…
https://msdn.microsoft.com/ja-jp/library/cc36469 …

>インポートライブラリ:User32.lib を使用
となっていますので、User32.libをリンク時に指定が必要です。
他にもいくつかのライブラリが必要となるハズですので、上記のMSDNのページから「地道に」調べてください。
プロジェクト(ソリューション)作るよりは『貴方にとって楽』なハズです。
    • good
    • 0
この回答へのお礼

ご教示の user32.lib をリンクしたら見事に現れました。
「未解決の外部参照」が11件もあるのに、たったひとつのライブラリで解決するとは驚きました。

お礼日時:2015/03/13 09:14

># 「Visual C++ コマンド ライン ツールでは、PATH、TMP、INCLUDE、LIB、および LIBPATH 環境変数が使用されます。

」って書かれてます。今回の場合はLIBでしょうかねぇ。

全然違った。
普通にライブラリのファイル名指定するだけでした。
# LIB、およびLIBPATHからファイル名に該当するもの検索してくれます。
# もちろん、上記の環境変数が未設定ならフルパスで指定することになるでしょうが。

ということで、
cl m1.cpp user32.lib
だけでとりあえず実行ファイル作成されました。
    • good
    • 0
この回答へのお礼

お礼が遅れてしまいました。フォローアップまでしていただいて、恐縮です。

お礼日時:2015/03/13 09:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!