Visual C++のエラー 傾向と対策

Visual C++での開発中に遭遇するエラーについて、そのよくある原因と対策とを収集するブログです

error LNK1561の傾向と対策:main関数を忘れている or 構成の種類が誤っている かも

プロジェクトをビルドしようとしたとき、以下のエラーメッセージが出ることがあります。

error LNK1561: エントリー ポイントを定義しなければなりません。

エントリーポイントとは平たくいえばmain関数とかWinMain関数のことです。まずはmain関数を書き忘れていないか確認してください。

もしもあなたが実行ファイルではなく、スタティックライブラリ(.lib)やダイナミックライブラリ(.dll)を作ることを意図しているのなら、プロジェクトの「構成の種類」が「アプリケーション (.exe)」になっていることがエラーの原因かもしれません。以下の方法により修正可能です。

  • 該当するDLL作成プロジェクトのプロパティを開く
  • 「全般」の「構成の種類」を意図するもの(「スタティックライブラリ(.lib)」または「ダイナミック ライブラリ(.dll)」)に変える

error C2143の傾向と対策:変数の定義位置がおかしいかも

Cプログラムを書いているとしょっちゅうC2143エラーに遭遇します。

error C2143: 構文エラー : ';' が '型' の前にありません。

一番多い原因は、おそらく変数の定義位置がブロック先頭にないことだと思います。

int main(void){
    int a = 0;
    ++a;
    int b = 0; // C2143: 定義位置がブロック先頭ではない

    return 0;
}

エラーを取り除くためには以下のように書かないといけません。

int main(void){
    int a = 0;
    int b = 0;
    ++a;

    return 0;
}

これはVisual Studio 2012以前のVC++コンパイラがC99規格に完全対応していなかったのが原因です。Visual Studio 2013ではC99への対応が進んだらしく、冒頭のコードでC2143エラーは発生しません。