C#のコンパイラはcscで、
C:\windows\Microsoft.NET\Framework\v4.0.30319
にある。
C++は何かと思うと、cl.exeで、
C:\Program Files\Microsoft Visual Studio 14.0\VC\bin
にあるとのことなので、環境変数のパスに以下を加える。
その他の環境変数includeに以下を加える。
C:\Program Files\Microsoft Visual Studio 14.0\VC\include
この段階だと、
corecrt.h
が無いとエラーがでる。
以下のパスもincludeに加える。
C:\Program Files\Windows Kits\10\Include\10.0.10240.0\ucrt
その他の環境変数libに以下を加える。
C:\Program Files\Microsoft Visual Studio 14.0\VC\lib
この段階だと、
uuid.lib
が無いとエラーがでる。
環境変数libに以下を加える。
C:\Program Files\Microsoft SDKs\Windows\v7.1A\Lib
この段階だと、
libucrt.lib
が無いとエラーがでる。
環境変数libに以下を加える。
C:\Program Files\Windows Kits\10\Lib\10.0.10240.0\ucrt\x86
コンパイルのコマンドは以下。
cl /EHsc test.cpp
とりあえずここまでで動いた。
実際この辺りの処理は
C:\Program Files\Microsoft Visual Studio 14.0\Common7\Tools\vsvars32.bat
で自動化されている。
Windows.h
が無い場合、以下をinclude環境変数に追加。
C:\Program Files\Microsoft SDKs\Windows\v7.1A\Include
同時にLINK2019の未解決の外部シンボルのエラーがでる。
C:\Program Files\Windows Kits\8.1\Lib\winv6.3\um\x86
をlibに追加して、コンパイル時、
cl /EHsc test.cpp user32.lib
とする。
とりあえず最初に以下をやってみる。
https://msdn.microsoft.com/ja-jp/library/ff381409(v=vs.85).aspx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
#ifndef UNICODE #define UNICODE #endif #include <windows.h> LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow) { const wchar_t CLASS_NAME[] = L"Sample Window Class"; WNDCLASS wc = { }; wc.lpfnWndProc = WindowProc; wc.hInstance = hInstance; wc.lpszClassName = CLASS_NAME; RegisterClass(&wc); HWND hwnd = CreateWindowEx( 0, CLASS_NAME, L"Learn to Program Windows", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL ); if (hwnd == NULL) { return 0; } ShowWindow(hwnd, nCmdShow); MSG msg = { }; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: PostQuitMessage(0); return 0; case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, &ps); FillRect(hdc, &ps.rcPaint, (HBRUSH) (COLOR_WINDOW+1)); EndPaint(hwnd, &ps); } return 0; } return DefWindowProc(hwnd, uMsg, wParam, lParam); } |