rc.exeが原因でVisual Studioをビルドできない


128

私はオンラインで検索しましたが、私の問題に似たものは何も見つかりませんでした。

空のC ++プロジェクトを作成し、リターンを含むmain.cppを追加しましたが、ビルドできません。これが私が受け取るメッセージです:

1>------ Build started: Project: Project1, Configuration: Debug Win32 ------
1>LINK : fatal error LNK1158: cannot run 'rc.exe'
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

この実行可能ファイルの場所を指定できるVS2012内のどこかにありますか?私はWindows 7 SDKをインストールしましたが、この実行可能ファイルは次の場所にあります。

C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin

私はCode :: Blocksから来て、問題なくmingw-gccを使用していますが、最近、マネージド実装にVSが必要なので、誰かがアイデアを持っているといいのですが。


FYI-Visual Studio 2013 Professionalでも壊れています:(
gbjbaanb

しかし、問題は、Windows SDKのディレクトリ(またはWindowsキット、今週彼らが呼び出すものは何でも)へのパスにあるようです。$(WindowsSdkDir)変数は、WindowsKitsディレクトリに設定されていません。代わりに、「最小」の内容を持つWindowsSDKディレクトリに設定されています。
gbjbaanb 2013年

3
VS2017によって引き起こされる同様のVS2015の問題に対する適切な解決策: stackoverflow.com/a/45319119/508431
Isaiah Norton

1
この重要なQAを 必ずお読みくださいstackoverflow.com/questions/43847542
Fattie

回答:


242

Googleでこれを見つけた...私はあなたのケースでコピーすることを引き受けるrc.exercdll.dllするvisual studio 2012\vc\binか、あなたはそれがインストールされている場所に:

パート2:FIX LINK: fatal error LNK1158: cannot run ‘rc.exe’

これをPATH環境変数に追加します。

C:\ Program Files(x86)\ Windows Kits \ 8.0 \ bin \ x86

これらのファイルをコピーします。

rc.exe
rcdll.dll

から

C:\ Program Files(x86)\ Windows Kits \ 8.0 \ bin \ x86

C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ bin

または私もこれを見つけました:
MicrosoftはMSVTパッケージからいくつかのことを残しました。それらが誤って除外されたのか、ライセンス上の理由で除外されたのかは誰にもわかりません。いくつかのGoogle検索は、いくつかのトリッキーなソースを表示します。幸いなことに、マイクロソフトはこの問題をはじめとする多くの問題をようやく改善し、解決しました。

http://msdn.microsoft.com/vstudio/express/support/faq/default.aspx#pricing

http://msdn.microsoft.com/vstudio/express/support/install/

十分な量のMSVT欠落ファイルがありますが、欠落しているSDKファイルはありません。

そしてこれ:
私がこれを行うことで解決した同じ問題がありました:

  1. Microsoft .Net Framework 2.0のインストール
  2. .NET Frameworkファイルのパス(私にとっては "C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727")をグローバルコンパイラ設定>プログラム> Code :: Blocks内の追加パスに追加します。

これで、エラーなしでリソースファイルをビルドおよびリンクできます。


6
おかげで、SDKビンからVSビンにrc実行可能ファイルをコピーする簡単な方法でした。
Patrick.SE 2013年

まあ、この答えのほとんどは引用でした...「私がこれを実行することで解決した同じ問題があった:」を明確にするために私ではなく、私が見つけたもの
Kat Cox

1
質問:x64バージョンではなく、なぜx86 rc.exeおよびrcdll.dllファイルを使用するのですか?
Carl

1
まあ、私が見つけた答えをコピーして貼り付けただけです...しかし、あなたは32ビットのインストールでx86を使用し(これは64ビットのシステムでさえもあるかもしれません)、64ビットのインストールでx64を使用します...それを推測します持っているはずのファイルのバージョンによって異なります
Kat Cox

2
私は時だC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64とRANコマンド:copy "C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64\rc.exe"copy "C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64\rcdll.dll"Visual Studioの2015年にこの問題を解決するために
ヤリTurkia

61

マシンにVS2017もインストールした後、CMake / Visual Studio 2015ビルドでこの問題に遭遇しました。私たちの場合の正しい解決策は、Visual Studioコマンドプロンプトにウィンドウキットのバージョン(8.1)を指定することです。そうしないと、デフォルトでbinディレクトリにrc.exeを含まないWindows 10キットが取得されます。

例:スタートメニュー-> Visual Studio 2015-> VS2015 x64ネイティブツールコマンドプロンプト

%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 8.1

最後の8.1オプションに注意してください


5
これがこの問題を解決する正しい方法だと思います。
jagttt 2017

2
私は同じ状況(VS2015とVS2017がインストールされたWin10)にありますが、私にとってはうまくいきませんでした。私のためにそれを修正した唯一のことは、手動で「C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.1A \ Bin」(rc.exeを含む最後のSDKバージョン)をPATHに追加することでした!
Scylardor 2018

@Scylardor-使用したパスは7.1 SDKのものです。C:\ Program Files(x86)\ Microsoft SDKs \ Windowsに8.1 SDKがインストールされていますか?あなたの場合、最後に7.1で同じコマンドを使用することが可能かもしれませんし、あるいは8.1 SDKをインストールする必要があるかもしれません。
MattAU 2018

call C:\\(....)\vcvarsall.bat" amd64 8.1andを使用してバッチファイルを作成しました。これstart cmake-guiは魅力のように機能します
Marius

おかげで、まったく同じ設定(サイドバイサイドVS)でした。これは、ファイルをコピーするよりもはるかにクリーンです。
E.モファット2018

32

私が見つけたものから、あなたがWindows 7 OSを持っているなら、次の手順を実行すると問題が解決します:

1)C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.1A \ Binに移動します

2)次に、このファイルからRC.exeとRcDllをコピーします

3)C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ binに移動し、コピーした2つのファイルを貼り付けます。

同じ問題があり、上記の投稿された解決策が機能しませんでした。私の解決策はそれから導き出されたもので、私にとってはうまくいきました。上記のものがうまくいかない場合は、これを試してみてください。


4
Baffingly、これは、Visual Studio 14.0 \ VC \ binにv7.1A \ビンからマイクロソフトにコピーし、あまりにも私のために働いた
エスケープ文字

これは、VS 2015と一緒にインストールVS 2017でのWindowsサーバー2012年私のために動作しませんでした
iLikeDirt

18

このrc.exeエラーは、Visual C ++コンパイラとWindows 10 SDKバージョンが同じVisual Studioの年に対応していない場合に発生する可能性があります。一般に、解決策は、システム上にあることを確認し、コンパイルで、使用しているVisual Studio年のVC ++およびWindows SDKを使用していることを確認することです。

たとえば、Visual Studio 2017または2019を使用していて、独自の2015 Windows SDKのインストールを選択せず​​にビルドツール2015をインストールし(デフォルトのインストールではインストールされません!)、それを使用してコンパイルしようとしている場合、この問題。

私の場合、既にVisual Studio 2017を使用していました。ビルドツール2015を使用してPythonライブラリ(またはおそらく任意のプログラム)をコンパイルしようとすると、この同じ「rc.exe」エラーが発生しました。Visual Studio 2017からWindows 10 SDKを使用しようとすると、VS2015 14.0 C ++コンパイラーが誤動作する可能性があることを読みました。

Build Tools 2015をアンインストールして、今回はカスタムインストールとして再インストールしました。ビジュアルC ++コンポーネントとWindows 10 SDKコンポーネントの両方をインストールすることを選択しました。これで問題が解決しました。

更新:Build Tools 2015をもう一度見たところ、どうやらカスタムインストールオプションはもうありません。その場合は、Visual Studio 2015をC ++およびWindows SDKコンポーネントと共にインストールすることもできます。


2
本当にありがとうございます、これは確かに適切な解決策です。注:インストーラーの「変更」コマンドを使用してSDKを追加しようとしましたが、スタックしました。再起動、アンインストール、最初からインストールする必要がありました。
バイオレットキリン2018

「...再インストール[ビルドツール2015]、今回はカスタムインストールとして、ビジュアルC ++とWindows 10 SDKコンポーネントの両方をインストールすることを選択する」が意味することを誰かが明確にしてくれるでしょうか?どこからインストールしましたか?マイクロソフトのスタンドアロンとして?
エステブロ2018

@estebro「ビルドツール2015」をググって最初のリンクをクリックすると、このスタンドアロンパッケージのMicrosoftのダウンロードページが表示されます。パッケージをダウンロードしてインストールします。ただし、rc.exeの問題がある場合は、デフォルトでパッケージをインストールしないでください。INSTEAD、カスタムインストールを選択し、Windows SDKのインストールを有効にします(デフォルトではありません)。
OrangeSherbet 2018

1
これが真の、概念的に正しい答えです。他のすべては機能しないハックです。それらのどれも私のためにしませんでした。
iLikeDirt

1
このOMFG!分かりやすい説明ありがとうございます。私はまったく同じ問題に遭遇し、インストールを非難した人々はそのような赤いニシンでした。同じ結果を確認するために5回再インストールしました。
Ananth

11

私の場合、VS2015とVS2017で作成されたプロジェクト間で混合と一致のエラーが発生しました。私の.vcxprojファイルには、PropertyGroup Label = "Globals">という名前のこのセクションがあります。TargetPlatformVersion = 10.0.15063.0のセクションがありました。TargetPlatformVersionを削除すると、問題が解決しました。

ここでブロックをコピーして貼り付けることはできませんが、stackoverflowsコーディング形式では許可されていません。


これは修正されました。どうも。
My1 2018年

7

私はWindows 7 x64とVisual Studio 2017を使用しています。Cythonスクリプトをコンパイルしようとすると、このエラーが発生します。それが私が解決した方法です:私はrc.exercdll.dllをコピーして貼り付けました

C:\Program Files (x86)\Windows Kits\8.1\bin\x86

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64

3
これらの手順は32ビット用です。64ビットの場合は、を試しC:\Program Files (x86)\Windows Kits\8.1\bin\x64てくださいC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64
Contango、2018

Cythonと私たちにとって、これは働いていた:私たちはコピーC:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64起因するRC.EXEエラーに構築することはできませんVisual Studioの修正する
ブランドンW.キング

4

ここに私の似たようなケース
があります。Win732ビットでVC2010作業プロジェクトがあります。:私は第一コンパイル時に次のエラー上昇、成功したが、VC2010からVC2013に私のプロジェクトで変換した後Win8.1の64ビットの下VC2013のクリーンmake installを
完成生成コード
LINK:致命的なエラーLNK1158が:「RC.EXE」を実行することはできません

解決法1:
削除VC2013を実行する前に、メモ帳のNameOfYourSolution.vcxprojファイルの要素「<PropertyGroup>」の行全体「<ExecutablePath Condition =” ...”> ... </ ExecutablePath>」
ソリューション2: VC2013を実行する
2つのファイルのみをコピー:rc.exeそしてrcdll.dllを「c:\ Program Files(x86)\ Windows Kits \ 8.1 \ bin \ x86 \」から「c:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ bin \」にコンパイルすると、コンパイルは成功しました!!
注意:
a)PATHや他のWindowsまたはVC環境変数を変更する必要はありません。
b)「プラットフォームツールセット」(プロジェクトプロパティページ->構成プロパティ->全般)は自動的に「Visual Studio 2013(v120)」に設定されます(プロジェクトの開発を続行できるように「Visual Studio 2010」に変更しないでください) VC2013のコンセプト)


4

私の場合、エラーはvcxprojの不適切な設定が原因でした。vcxprojはサードパーティ製だったので、どのようにしてその状態になったのかわかりません。

具体的には、プラットフォーム/プロファイルコンボの1つで、プラットフォームフォルダーがWindows SDK binフォルダーにありませんでした。

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
 <ExecutablePath>$(VCInstallDir)bin\x86_amd64;$(VCInstallDir)bin;$(WindowsSdkDir)bin\NETFX 4.0 Tools;$(WindowsSdkDir)bin\x86;

正しい、どこ

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
 <ExecutablePath>$(VCInstallDir)bin\x86_amd64;$(VCInstallDir)bin;$(WindowsSdkDir)bin\NETFX 4.0 Tools;$(WindowsSdkDir)bin;

間違いでした。違いを確認するには、コードボックスの最後までスクロールする必要がある場合があります。

また、奇妙な理由で$(WindowsSdkDir)bin \ x64;にも注意してください。私にはうまくいきませんでした。rc.exeが確実にそのフォルダーに存在するとき、理由を理解しようとしましたが、私はあきらめました。

私の意見では、rc.exeをあちこちにコピーすることを含む以前のポスターのソリューションは間違っています。プロジェクトが他の人のマシンで動作しないためです。プロジェクト内のパスを正しく修正すると、Windows SDKが正しくインストールされているすべてのマシンで機能するはずです。


4

私はWindows 10 x64とVisual Studio 2017を使用しています。以下からrc.exeとrcdll.dllをコピーして貼り付けました。

C:\Program Files (x86)\Windows Kits\8.1\bin\x86

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64

それはで動作します:(qtクリエーター5.7.1)


3

これは少し古いかもしれません。ただし、rc.exeとexdll.dllのコピーが機能しなかった場合、windows sdkフォルダーが存在していても、windows sdkが正しくインストールされていない可能性があります。:あなたは、次のページで勝利8のためのSDKを更新することができ http://msdn.microsoft.com/en-US/windows/hardware/hh852363 SDKを再インストールした後、問題が解決になるだろう。また、プラットフォームツールセットが正しく設定されていることを確認してください。


3

最近この問題に遭遇しました。VS 2015とVS 2017の両方をインストールし、Windowsキット8.1と10をインストールしました。

VS 2017のコマンドプロンプトは期待どおりに動作し、rc.exeが表示されます VS 2015では、これは正しくありません。実際、VS 2015のvcvarsall.batスクリプトはWindows 10キットへのパスをPATH変数に追加しますが、少し間違ったパスを追加します。パスを追加します

"C:\Program Files (x86)\Windows Kits\10\bin\x86"

実際のパスは

"C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86"

Windows 10キットの更新(またはVS 2017のインストール)がこの問題につながったようです。

したがって、解決策は単純です。「C:\ Program Files(x86)\ Windows Kits \ 10 \ bin」フォルダーに、基になるフォルダー内の対応するフォルダーを指すシンボリックリンクを作成するだけです。たとえば、フォルダー「10.0」のシンボリックリンク「x86」 .17763.0 \ x86 "、" x64 "は" 10.0.17763.0 \ x64 "など


2

VS 2013でも同じ問題があり、を変更することで修正できましたPlatform Toolset

あなたはそれを一般的なプロジェクト設定で見つけることができます。

たとえばPlatform Toolset、VS 2010に切り替えると、VSはWindows \ v7.0A SDKを使用します。

これをprebuildイベントに追加することで、どのSDKパスが使用されているかを確認できます。

echo using SDK $(WindowsSdkDir)

ただし、これはVS2013がMFCアプリをまったくサポートしていないことを意味します。rc.exeは "Windows Kits"ディレクトリにあり、SDKディレクトリにはないことに注意してください。役に立たない。
gbjbaanb 2014

2

VS 2013(Update 3)を搭載したWindows 7とFortran Windows(Update 5)用のIntel Parallel Studio XE Composer Editionを使用しています。箱から出して同じ問題がありました。

不足しているrc.exeの問題を修正したら、別の問題が発生しました。リンカーにkernel32.libがありませんでした。

インテルComposerオプション(TOOLS-> Options ...-> Intel Composer XE-> Visual Fortran-> Compilers)を更新して、両方の問題を修正しました。

追加したWin32タブの場合:

実行可能ファイル C:\ Program Files(x86)\ Windows Kits \ 8.0 \ bin \ x86; ($(PATH)の直前)

ライブラリ: C:\ Program Files(x86)\ Windows Kits \ 8.0 \ Lib \ win8 \ um \ x86; (最後に)

追加したx64タブの場合:

実行可能ファイル C:\ Program Files(x86)\ Windows Kits \ 8.0 \ bin \ x64; ($(PATH)の直前)

ライブラリ: C:\ Program Files(x86)\ Windows Kits \ 8.0 \ Lib \ win8 \ um \ x64; (最後に)

更新...

また、一部のSDKヘッダーファイル(winver.hおよびwinapifamily.h)がありませんでした。同じTOOLS-> Options ...エリアに以下を追加しました。

win32タブとx64タブの両方

インクルード C:\ Program Files(x86)\ Windows Kits \ 8.0 \ Include \ um; C:\ Program Files(x86)\ Windows Kits \ 8.0 \ Include \ shared;


2

私はVS2010(SDK7.1)ソリューションで1つ(合計3つのうち)のプロジェクトを見つけました(プロジェクトは順次線形依存関係チェーンでリンクされています)。プロジェクトファイルに空の.rcファイルがありました。空の.rcファイルを(プロジェクトから削除せずに)削除すると、「致命的なエラーLNK1158:... cvtres.exe」の問題が解決しました。

更新:次のコピーで問題が修正されました:

xcopy "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe" "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\"

これにより、MSBuildを介してWinSDK7.1が.rcファイルを実行可能ファイルにコンパイルできるようになります。


ところで、次のコピーで問題が修正されました:xcopy "C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ bin \ cvtres.exe" "C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ bin \ x86_amd64 \ "これにより、MSBuildを介してWinSDK7.1が.rcファイルを実行可能ファイルにコンパイルできるようになります。
Sterge 2015

2

これは、Visual Studio 2017の場合よりもさらに簡単です。MicrosoftVisual Studioインストーラーを使用して変更するには、https//docs.microsoft.com/en-us/visualstudio/install/modify-visual-studioの指示に従ってください。

Microsoft Visual Studioインストーラー内で、インストールされているVisual Studioパッケージの下の[変更]をクリックし、C ++を使用したデスクトップ開発がチェックされていること、およびMFCおよびATlサポート(x86およびx64)が要約されていることを確認します。


1

これは、以前のバージョンのVisual Studioで発生したvcxproj、または構成プロパティ->全般でプラットフォームツールセットを変更したことが原因である可能性があります。

その場合、可能な解決策:

1)構成プロパティ-> VC ++ディレクトリに移動します。

2)実行可能ディレクトリのドロップダウンを選択します

3)[親またはプロジェクトのデフォルトから継承]を選択します


1

環境変数ウィンドウSDK 8.1パスに追加

C:\ Program Files(x86)\ Windows Kits \ 8.1 \ bin \ x64

次に、Visual Studio x64 Native Toolsコマンドプロンプトを開き、次のように入力します。

vcvarsall.bat


1

Visual Studio 2015でSDK Windows 10を本当に使用する必要がある場合は、古いバージョンをsdk-archiveからダウンロードする必要があります。SDKの新しいバージョンはrc実行可能ファイルの場所を変更し、Visual Studio 2015 update 3(最新バージョン)のMSBuildはそれを見つけることができません。少なくともSDK Windowsのバージョン10.0.14393.795はVisual Studio 2015と互換性があります。


これは、この苛立たしい問題の実際の説明である可能性があります。ここで問題にさらに別の最近のQAは、誰もがここでグーグルのために、だ........ stackoverflow.com/a/53804573/294884
Fattie

1

多分プロジェクトファイルはVS2017によって触れられました。その後、2015年にプロジェクトをリンクすると、「リンク:致命的なエラーLNK1158: 'rc.exe'を実行できません」がビルドにブレーキをかけます。

vcxprojで:

1)交換:

<WindowsTargetPlatformVersion>10.0.17763.0</WindowsTargetPlatformVersion> と: <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>

2)削除: <VCProjectVersion>15.0</VCProjectVersion>

3)置き換え <PlatformToolset>v141</PlatformToolset><PlatformToolset>v140</PlatformToolset>


1

C ++拡張を使用してソースからPythonパッケージをビルドするために使用していたAzure DevOpsパイプライン内のタスク内でrc.exe実行しようとすると、OPのリンクエラーが発生しました。次のように、を呼び出す直前にタスク内へのパスを追加することで解決できました。pip installbashrc.exebashpip install

PATH="/c/Program Files (x86)/Windows Kits/10/bin/10.0.18362.0/x64":$PATH

それはそのエージェントjobに使用vmImage: 'windows-2019'していたAzureの内部でした。つまり、Windows Server 2019とVisual Studio 2019。


1

Windowsでもこの方法で機能させることができました

  1. x86バージョンを使用していると想定して、rc.exeの場所を指すように環境変数を設定します。

C:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ 10.0.18362.0 \ x86

を使用して環境変数を簡単に設定できます

C:> setxパス "%path%; C:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ 10.0.18362.0 \ x86"

  1. Qt Creatorを再起動します
  2. クリーンと再構築

0

私の場合、Visual Studio 2015-> Modifyを介してWindows SDK 10586をインストールし、次のパスをインストールしました。

C:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ arm64 \ rc.exe

C:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ x64 \ rc.exe

C:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ x86 \ rc.exe


0

Visual Studio Community 2019の場合、上記の答えのファイルをコピーして(rc.exe rcdll.dllC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.21.27702\bin\Hostx86\x86、私のためにトリックを行いました。


0

私はWindows 10 Pro x64、VS 19を使用しています。

cmdでApache用のmod_wsgiをインストールしようとしたとき。

C:\>python -m pip install mod_wsgi

これは、コマンドプロンプトから取得したエラーです。

LINK : fatal error LNK1158: cannot run 'rc.exe'

error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\link.exe' failed with exit status 1158

私はrc.exeとrcdll.dllをからコピーしなければなりませんでした

C:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ 10.0.18362.0 \ x86

に追加します

C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ bin \ x86_amd64

cmdの結果

C:\>python -m pip install mod_wsgi
Collecting mod_wsgi
Using cached mod_wsgi-4.7.1.tar.gz (498 kB)
Installing collected packages: mod-wsgi
Running setup.py install for mod-wsgi ... done
Successfully installed mod-wsgi-4.7.1

これが誰かを助けることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.