none
サンプルのソースコードで全てエラーがでる。 RRS feed

  • 質問

  • windows Vistaを使っています。

    C++初心者で、テキストを見ながらコーディングをしているのですが

    テキストのサンプルコードでエラーが出てしまします。

    なぜでしょうか?

    <コード>

    #include<iostream.h>

    int main() { cout << "やぁ、こんちは。" << endl; return0; }

    <エラー>

    1>------ ビルド開始: プロジェクト: test3, 構成: Debug Win32 ------
    1>LINK : error LNK2001: 外部シンボル "_mainCRTStartup" は未解決です。
    1>c:\users\aiai\documents\visual studio 2010\Projects\test3\Debug\test3.exe : fatal error LNK1120: 外部参照 1 が未解決です。
    ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

    2012年12月11日 22:37

すべての返信

  • 新規にプロジェクトを作成し、何も変更せずにビルドをした場合はどうなりますか?

    失敗するのであれば、Visual Studioのインストールに失敗している可能性が考えられます。もしそうならファイルが読み込めない等、別のエラーになりそうですので何が起こっているのかちょっとわかりません。

    成功するのであれば、test3プロジェクトの設定がおかしくなっていることになります。例えばコンパイルオプション「既定ライブラリ名の省略(/Zl)」が指定されていたりしませんか?

    2012年12月11日 23:14
  • 一般的には、次のように成功するのですが・・・。

    ------ ビルド開始: プロジェクト: test3, 構成: Debug Win32 ------
    コンパイルしています...
    main.cpp
    リンクしています...
    マニフェストを埋め込んでいます...
    ビルドログは "file://c:\D\E\F\G\_VS2008\test3\test3\Debug\BuildLog.htm" に保存されました。
    test3 - エラー 0、警告 0
    ========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========

    気になるのは、「コンパイルしています...」の行が無いことですね。
    コンパイルされていない疑いがあります。
    (1)ログを編集してからアップされたのかもしれませんが、
      ビルドしたときのログの「全て」をあげなおしてみてはどうでしょう(提案)。
    (2)「リビルド」を行ったときは、どうなりますか(質問)。

    ちなみに自分が試したのは以下のコードon VS2008pro

    include <iostream>
    using namespace std;

    int main()
    {
        cout << "やぁ、こんちは。" << endl;
        return 0;
    }

    2012年12月12日 1:45
  • 1>LINK : error LNK2001: 外部シンボル "_mainCRTStartup" は未解決です。

    コンパイル→オブジェクトファイルの生成は成功しています。
    オブジェクトファイルからEXEファイルを生成するためリンカーでオブジェクトファイルやライブラリをLINKします。

    このエラーメッセージでは、コンパイルで失敗しているのではなく、リンクで失敗しています。
    原因としては、"_mainCRTStartupは未解決"とのエラーなので、コンソールアプリにも関わらずコンソールアプリに必要なライブラリが指定されていないためと思われます。

    プロジェクトの種類、もしくはコンパイルオプションで必要なライブラリが指定されているか確認してみてください。

    # 新しい言語を覚える際に、エラーメッセージから原因を調べるのが言語習得の早道だったり。

    2012年12月12日 13:47
  • こんにちは、Ai Amy さん
    フォーラムオペレータの佐伯 玲 です。

    その後の状況はいかがでしょうか?
    みなさんから情報が寄せられておりますので一度ご確認いただけましたらと思います。

    MSDN フォーラムでは解決に至ったり参考になった情報に「回答としてマーク」して頂くことをお願いしております。
    「回答としてマーク」は複数の返信に関して行うことが出来ます。

    回答マークがついているとスレッドの一覧などで既にそのスレッドが解決していることを表し、同じような内容で困っている人がいた際に情報を探しやすくなるようになります。
    また、回答マークがついていない状態は未解決で情報を募集している状態のままとなってしまいます。

    ご確認いただきうまくいかなかったりした際にはご確認いただいた内容や状況を改めてご返信いただければ新たな情報を得られ易くなるのではないかと思います。

    宜しくお願い致します。
    __________________________
    日本マイクロソフト株式会社 フォーラム オペレータ 佐伯 玲

    2012年12月18日 6:06