• 締切済み

LINK : fatal error LNK1104について

初心者です。 Microsoft Visual C++ 2008 Express EditionでC++の勉強を始めました。 しかし 「LINK : fatal error LNK1104: ファイル 'C:\DOCUME~1\○○' を開くことができません。」(○○は私の名前です) と表示され、exeファイルが生成されません。オブジェクトファイルはできているみたいです。 いろいろと調べてはみたんですが、環境設定の問題でしょうか?わかりません。 解決方法教えてください!

みんなの回答

回答No.3

Visual Studio側でターゲットのライブラリが存在するディレクトリを指定していないのでは。 名前の短いディレクトリに当該のライブラリを置いて#pragma commentでリンクしてみます。 これでも駄目ならターゲットが壊れているか、プロジェクトファイルが壊れているかを疑います。

回答No.2

私も同じエラーに遭遇したことがあります。 私の場合、書き上げたプログラムを「デバックなしで開始」などで実行した場合、質問文にあるエラーが表示されました。 原因としては、いちいちコンパイル後に表示されるコマンドプロンプトを終了してから、プログラムの加筆・修正をしなかったことが原因のようでした。 ある程度プログラムを書いた後、「デバックなしで開始」などのコマンドでプログラムの動作チェックをすると思います。このコマンドを実行すると作ったプログラムのコンパイルが行われ、 問題がなければそのプログラムがコマンドプロンプトで実行されますよね。そうやって動作を確認した後は、プログラムに加筆・修正を加えてもう一回「デバックなしで開始」でコンパイルし、動作チェックという流れでプログラムを書いていくと思います。 この動作チェックを、コマンドプロンプトで行った後に、コマンドプロンプトのウィンドウを閉じず、プログラムに対して加筆・修正しもう一度「デバックなしで開始」を行おうとすると、 質問分にあるエラーが発生するみたいです。 言おうとしていることがきちんと伝わっているか自信がありませんが、私の場合はエラーの原因はこのようなものでした。 的外れな回答でしたらすいません。

  • chie65535
  • ベストアンサー率43% (8516/19358)
回答No.1

「コマンドプロンプト」を起動したら C:\Documents and Settings\○○ △△\>_ ←「_」が点滅 って画面になりませんか? そして「○○」と「△△」の間に、半角スペースが1つ入ってませんか? リンカが上記のフォルダで作業する場合「Documents and Settings」と言うフォルダは「半角スペースを含む長い名前」なので、問題が起きないよう「DOCUME~1」と言う「短いDOS名」に変換されます。 こうしないと、リンカは「スペースをパラメータの区切りだと思う」ので「C:\Documents and Settings\LogOnName\vc6\project\debug\test.exe」と言うファイルを作れと指定された時に「C:\Documents」「and」「Settings\LogOnName\vc6\project\debug\test.exe」の3つのファイルが指定されたと勘違いします。 このままでは「C:\Documents」は存在しないので LINK : fatal error LNK1104: ファイル 'C:\Documents' を開くことができません。 などのエラーを出してしまう事になります。 これでは困るので「C:\Documents and Settings\LogOnName\vc6\project\debug\test.exe」は「C:\DOCUME~1\LogOnName\vc6\project\debug\test.exe」などのように、フォルダ名に半角スペースが含まれないように変換します。 しかし、ログオン名が「○○ △△」のように「半角スペースを含む場合」までは想定していない為「C:\Documents and Settings\○○ △△\vc6\project\debug\test.exe」を「C:\DOCUME~1\○○ △△\vc6\project\debug\test.exe」に変換はしますが「○○ △△」の部分を処理しません。 すると、リンカは、与えられたファイル名を半角スペースで区切って「C:\DOCUME~1\○○」と「△△\vc6\project\debug\test.exe」に分離してしまいます。 そして「C:\DOCUME~1\○○」と「△△\vc6\project\debug\test.exe」の2つのファイルを開こうとして LINK : fatal error LNK1104: ファイル 'C:\DOCUME~1\○○' を開くことができません。 などのエラーを出してしまう事になります。 実行ファイルを作成する「作業用フォルダ」を C:\Documents and Settings\○○ △△\vc6\project\debug\ などの個人フォルダ配下ではなく C:\c_test\project\debug\ などの「フォルダ名に半角スペースを含まないフォルダ」にしましょう。 場合によっては、コンパイラ、ライブラリ、リンカのインストールをやり直ししなければなりません。

wac-tobac
質問者

補足

回答ありがとうございます!! ご指摘の通り、コマンドプロンプトを開くと自分の姓と名の間にスペースが入ってます。 なぜエラーが起きてしまうのか、とてもよく理解できました。 実行ファイルを作成する「作業用フォルダ」はC:\c_langという感じで個人フォルダ配下にはないんですが、それでもやっぱり同じエラーが出てしまいます・・・。 あと、コマンドプロンプトはVisual C++ のツールの中のショ-トカットから使ってます。 Visual C++ 2008 Express Editionのインストール方法が悪いのでしょうか?う~ん・・

関連するQ&A

  • Fortranについて,fatal error LNK1181

    Fortranをインストールしてプログラムをコンパイルしようとすると,以下のエラーが出ます. LINK : fatal error LNK1181: cannot open input file "C:\DOCUME~1\dfor.lib" 正常に作動させるにはどうしたらいいでしょうか.何か足らないものがあるのでしょうか.以下のフォルダに, インストールCDに入っているLIBファイルをすべてコピペしてみたのですが,変わりなしです. C:\Program Files\Microsoft Visual Studio\DF98\LIB OSはXP,今回インストールをしたFortran及びプログラム作成をしたFortranは,共にVisual Fortran 6.0です.何か打開策があれば助言お願いします.

  • LINK : fatal error LNK1104: コンパイラは、ファイル 'DxErr9.lib' を開くことができません。

    使用ソフトはvisual c++.netで DIRECTXの雑誌に付録していたファイルを使って、 ビルドしてみたのですが、 LINK : fatal error LNK1104: コンパイラは、ファイル 'DxErr9.lib' を開くことができません。 っと表示され、EXEファイルが生成されませんでした。 ライブラリファイルにちゃんと登録して、 リンカの依存する関係にも登録したのになぜ? ちなみにライブラリファイルにはちゃんと dxerr9.libはありました。

  • C++での質問です。

    C++での質問です。 http://homepage2.nifty.com/c_lang/index_sdk.html ここを見ながら勉強しようと思うのですが、イントロダクションに書いてあるプログラムをそのままVisual C++ 2010Expressでデバッグでビルドしようとしてもうまく行かず、 1>LINK : error LNK2001: 外部シンボル "_WinMainCRTStartup" は未解決です。 1>C:\Users\(中略).exe : fatal error LNK1120: 外部参照 1 が未解決です。 と出ます。 リリースだとエラーは吐かないのですが、リリースフォルダ内にexeファイルが生成されず、やっぱり起動できませんでした。 Visual C++ 2010Expressはインストールしてほぼそのままなんですが、何かやっておかないといけないことはあるんでしょうか?

  • LNK1120 エラーについて

    このエラーが出たら一体何が問題なんですか? このエラーが出た以降、Visual C++ 2008がずっと使えなくなってしまいました…。ちなみ、この時にビルドで出力されたのは SVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。 ■■■\Debug\tr3.exe : fatal error LNK1120: 外部参照 1 が未解決です。 …でした。 あと、入力したものは普通に #include <stdio.h> void main(){ printf ("Hello World"); } です

  • C++でのエラー LNK2001

    C++でプログラミング中ビルドしたところ以下のようなエラーが出ました。解決方法がわかりません。どのようにしたら解決できるのでしょうか? ---------------------------------------------------------------- コンパイル中... sample01.cpp リンク中... sample01.obj : error LNK2001: 外部シンボル "__imp__dispose_library" は未解決です sample01.obj : error LNK2001: 外部シンボル "__imp__get_copyright_information" は未解決です sample01.obj : error LNK2001: 外部シンボル "__imp__get_version_information" は未解決です sample01.obj : error LNK2001: 外部シンボル "__imp__initialize_library" は未解決です sample01.obj : error LNK2001: 外部シンボル "__imp__close_reader_writer" は未解決です sample01.obj : error LNK2001: 外部シンボル "__imp__get_last_error_types" は未解決です Debug/Sample01.exe : fatal error LNK1120: 外部参照 6 が未解決です。 link.exe の実行エラー

  • C++でのエラーについて

    Microsoft Visual C++ 2010 Express において、以下のファイル (http://1st.geocities.jp/shift486909/program/Bernoulli/func.cpp) をコンパイルしようとすると、 1>------ ビルド開始: プロジェクト: eter, 構成: Debug Win32 ------ 1>LINK : error LNK2001: 外部シンボル "_WinMainCRTStartup" は未解決です。 1>c:\users\garnet\documents\visual studio 2010\Projects\eter\Debug\eter.exe : fatal error LNK1120: 外部参照 1 が未解決です。 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== というようなエラーが出てコンパイルできません。 何が原因なのでしょうか?

  • VC++でのリンクエラー [error LNK2005]

    VC++でMFCを使用してダイアログベースのEXEを 作成しています。 以下のクラスのメンバ関数などを使用して、色の操作をしています。 CDC::SetBkColor() CDC::SetTextColor() ビルド時、以下のリンクエラーとなりました。 ---------------------------------------------- nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) はすでに LIBCMT.lib(delete.obj) で 定義されています Release/MenueTest.exe : fatal error LNK1169: 1 つ 以上の複数回定義されているシンボルが見つかりました link.exe の実行エラー ---------------------------------------------- MFC と C(?)のライブラリで delete()関数が競合しているようですが、これを回避する方法をご存知の方、ご教授願います。 <環境> OS:Windows2000 VC++6.0 <備考> リンクエラーになるのは以下の組み合わせです。 「MFCをスタティックリンクする+リリース版」 MFCをスタティックリンクしてもデバッグ版のビルドだとエラーになりません。 また、MFCをスタティックリンクしない場合もエラーにはなりません。 ただし、リンクエラーにならなかった場合、どちらのオブジェクトの delete()関数が呼ばれるか不明で、それが正しいのかも心配です。

  • LNK2005

    Visual C++ Version5.0を使っています。 OSはWindows XPです。 translator.cpp parser.cpp scanner.h という三つのファイルをビルドしようとすると translator.obj : error LNK2005: "int error_flag" (?error_flag@@3HA) は すでに parser.obj で定義されています というエラーがそれぞれの変数ごとに20個出て、最後に ebug/COSC47101.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました link.exe の実行エラー と表示されます。それらの変数はすべて"scanner.h"で定義されており、 二つの.cppファイルがincludeしているのが原因だということは分かっています。 しかし、どうやって解決すればよいのでしょうか? 過去ログを参考にして二つの.cppファイルの中で #if !defined(HOGE_X) #define HOGE_X #endif //include files #include "scanner.h" とやっても全然駄目です。 どうか解決するまで手取り足取り教えてください。 お願いします。m(__)m

  • LINK : fatal error LNK1104: ファイル 'C:\DOCUME~1\鈴木' を開くことができません。

    データセットをしようとすると XSD を使用して DataSet クラスを作成しています... fatal error LNK1104: ファイル 'C:\DOCUME~1\鈴木'を開くことができません。 というようなエラーが出てしまいます。 どのようにすればエラーがなくなるのか教えてください。

  • microsoft visual C++ でC言語のプログラミング

    プログラミングの超初心者です。 microsoft visual C++ 6.0を利用してC言語のプログラミングをしたいのですが,最も基本のhello worldを表示させようとしてビルドを行うと以下のようなエラーが表示されますが,解決法がわかりません. --------------------構成: hello1 - Win32 Debug-------------------- リンク中... LINK : fatal error LNK1104: ファイル "Debug/hello1.exe" を開けません。 link.exe の実行エラー hello1.exe - エラー 1、警告 0 解決法を教えていただけるとうれしいです. お願い致します.

専門家に質問してみよう