

Visual Studio Pro 2013 update 5を使用しております。  
古いプロジェクト(VC6)作成のプロジェクトを変換してコンパイルしたところ、以下のエラーが出ます。

[code]

    error:LNK1104ファイル 'LIBC.lib' を開くことができません。
    
[/code]

本サイト内を検索したところ、以下の投稿を見つけました。

[「エラーLNK1104ファイル 'LIBCD.lib'
を開くことができません。」への対処法について](https://ja.stackoverflow.com/q/45155)

しかし、そこで紹介されている解決策（リンカーオプションを/MTや/MDにする）をしても、今回のエラーは解決しませんでした。

他にはどこをチェックして、どのように修正すればよいでしょうか。  
ご教示ください。よろしくお願いいたします。


CC BY-SA 4.0
2021-12-12T05:41:42.730
84074
2022-10-04T02:02:20.317
2021-12-12T06:20:55.527
3060
49468
question
visual-c++
"error:LNK1104ファイル 'LIBC.lib' を開くことができません。"への対処法について


エラーメッセージに出ている`LIBC.lib`はシングルスレッド・リリース版のCRTライブラリです。[Visual Studio 2005 の重要な変更点
- CRT](https://docs.microsoft.com/ja-jp/cpp/porting/visual-cpp-change-
history-2003-2015?view=msvc-170#crt-2)には

> シングルスレッドの CRT ライブラリ libc.lib と libcd.lib は削除されました。 マルチスレッドの CRT
> ライブラリを使用してください。 /ML コンパイラ フラグはサポートされなくなりました。
> マルチスレッドのコードとシングルスレッドのコード間のパフォーマンスの違いが重要な問題になる場合に、一部の関数のロックなしバージョンが追加されました。

と説明のある通り、Visual Studio
2005以降はシングルスレッド版のCRTライブラリは廃止されました。マルチスレッド版のCRTライブラリに移行する必要があります。

本来、`LIBC.lib`にリンクしているオブジェクトファイルを再コンパイルすべきです。

* * *

`LIBC.lib`にリンクしているオブジェクトファイルにソースコードが存在せず再コンパイルできない場合でも努力と根性で何とかなるかもしれません。ただし、シングルスレッドを前提にコーディングおよびコンパイルがされているため正常に動作する保証はありません。

  1. [リンクオプション `/NODEFAULTLIB:LIBC`](https://docs.microsoft.com/ja-jp/cpp/build/reference/nodefaultlib-ignore-libraries?view=msvc-170) を追加します
  2. （リンクエラーが発生する場合）`LIBCMT.lib`を追加します
  3. （Visual Studio 2015以降でリンクエラーが発生する場合）`legacy_stdio_definitions.lib`を追加します


CC BY-SA 4.0
2021-12-12T08:56:29.677
84078
2021-12-12T08:56:29.677
4236
84074
answer