こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

LINK : fatal error LNK1104について

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

投稿日時 - 2009-02-07 14:54:02

QNo.4696911

困ってます

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(3)

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

投稿日時 - 2014-01-05 15:48:40

ANo.2

私も同じエラーに遭遇したことがあります。

私の場合、書き上げたプログラムを「デバックなしで開始」などで実行した場合、質問文にあるエラーが表示されました。

原因としては、いちいちコンパイル後に表示されるコマンドプロンプトを終了してから、プログラムの加筆・修正をしなかったことが原因のようでした。

ある程度プログラムを書いた後、「デバックなしで開始」などのコマンドでプログラムの動作チェックをすると思います。このコマンドを実行すると作ったプログラムのコンパイルが行われ、
問題がなければそのプログラムがコマンドプロンプトで実行されますよね。そうやって動作を確認した後は、プログラムに加筆・修正を加えてもう一回「デバックなしで開始」でコンパイルし、動作チェックという流れでプログラムを書いていくと思います。
この動作チェックを、コマンドプロンプトで行った後に、コマンドプロンプトのウィンドウを閉じず、プログラムに対して加筆・修正しもう一度「デバックなしで開始」を行おうとすると、
質問分にあるエラーが発生するみたいです。

言おうとしていることがきちんと伝わっているか自信がありませんが、私の場合はエラーの原因はこのようなものでした。

的外れな回答でしたらすいません。

投稿日時 - 2009-11-01 23:47:09

ANo.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\
などの「フォルダ名に半角スペースを含まないフォルダ」にしましょう。

場合によっては、コンパイラ、ライブラリ、リンカのインストールをやり直ししなければなりません。

投稿日時 - 2009-02-07 15:17:53

補足

回答ありがとうございます!!

ご指摘の通り、コマンドプロンプトを開くと自分の姓と名の間にスペースが入ってます。
なぜエラーが起きてしまうのか、とてもよく理解できました。

実行ファイルを作成する「作業用フォルダ」はC:\c_langという感じで個人フォルダ配下にはないんですが、それでもやっぱり同じエラーが出てしまいます・・・。
あと、コマンドプロンプトはVisual C++ のツールの中のショ-トカットから使ってます。
Visual C++ 2008 Express Editionのインストール方法が悪いのでしょうか?う~ん・・

投稿日時 - 2009-02-07 16:39:38