やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

VC++2010 複数プロジェクトで実装する手順

複数プロジェクト化の手順をメモしておく。

入手先

MEGA

完成

staticライブラリから取得した文字列をWindowのタイトルに設定した。

完成

ソリューション構成

ソリューション構成

手順

  1. Mainプロジェクトを作成する
  2. Libプロジェクトを作成する
  3. ソースコードを用意する
  4. プロジェクト依存関係
  5. プロジェクト設定

1. Mainプロジェクトを作成する

Mainプロジェクトを作成する0

Mainプロジェクトを作成する1

Mainプロジェクトを作成する2

Mainプロジェクトを作成する3

Mainプロジェクトを作成する4

2. Libプロジェクトを作成する

Libプロジェクトを作成する0

Libプロジェクトを作成する1

Libプロジェクトを作成する2

Libプロジェクトを作成する3

Libプロジェクトを作成する4

3. ソースコードを用意する

ソリューション構成

ソースコードは一部抜粋。

Human.h

class Human
{
public:
    Human(void);
    ~Human(void);
    basic_string<TCHAR> Introduce();
};

Human.cpp

Human::Human(void) {}
Human::~Human(void) {}
basic_string<TCHAR> Human::Introduce()
{
    basic_stringstream<TCHAR> stream;
    stream << _T("Human.Introduce() 私は人間である。") << endl;
    return stream.str();
}

Program.cpp

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
TCHAR szClassName[] = _T("MainProject");

HWND hWnd;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst, LPSTR lpszCmdLine, int nCmdShow)
{
    MSG msg;
    WNDCLASS myProg;
    if (!hPreInst) {
        myProg.style            = CS_HREDRAW | CS_VREDRAW;
        myProg.lpfnWndProc      = WndProc;
        myProg.cbClsExtra       = 0;
        myProg.cbWndExtra       = 0;
        myProg.hInstance        = hInstance;
        myProg.hIcon            = NULL;
        myProg.hCursor          = LoadCursor(NULL, IDC_ARROW);
        myProg.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1);
        myProg.lpszMenuName     = NULL;
        myProg.lpszClassName    = szClassName;
        if (!RegisterClass(&myProg)) { return FALSE; }
    }

    Human human;
    hWnd = CreateWindow(szClassName,    // class名
        human.Introduce().c_str(),      // タイトル
        WS_OVERLAPPEDWINDOW,        // Style
        CW_USEDEFAULT,              // X
        CW_USEDEFAULT,              // Y
        CW_USEDEFAULT,              // Width
        CW_USEDEFAULT,              // Height
        NULL,                       // 親ウィンドウまたはオーナーウィンドウのハンドル
        NULL,                       // メニューハンドルまたは子ウィンドウ ID
        hInstance,                  // アプリケーションインスタンスのハンドル
        NULL                        // ウィンドウ作成データ
    );
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);

    while (GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return (msg.wParam);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch (msg) {
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            return(DefWindowProc(hWnd, msg, wParam, lParam));
    }
    return (0L);
}

4. プロジェクト依存関係

プロジェクト依存関係0

プロジェクト依存関係1

プロジェクト依存関係2

5. プロジェクト設定

プロジェクト設定0

プロジェクト設定1

プロジェクト設定2

プロジェクト設定3

完成

ビルドして完成。

完成