技術は記憶の彼方へと

覚えたつもりですぐに忘れるエンジニアの備忘録

fatal error LNK1158: 'rc.exe' を実行できません を解決した話

時系列分析を行えるライブラリとしてPyFluxがあることを知り、検証してみようと思いだったわけでインストールしてみようと思ったがタイトルにあるエラー?が襲ってきました。
個人的には初めて見たエラーでして、エラー文のほかの部分を読んで対策をいろいろと講じてみました。

目次


環境



インストール


公式 に書いてある通りにpipを使ってインストールしようと試みましたがエラーを吐きました。
この段階ではタイトルのエラーではなく、「Microsoft Visual C++ 14.0」ってのがないよって言ってるだけでしたのでBuild Tools for Visual Studio2019の中にあるC++ Build Toolsをインストールしました。
f:id:Cloudvelse:20191205145128p:plain
これで文句はないだろうと慢心してました。

再度pipを実行しましたが、何やら長いエラー文...
ちょっと悲しくなりながら読んでると出てきたのがタイトルにもある「fatal error LINK1158:‘rc.exe’を実行できません」と言う一文 。
これについて私が行なった対策を以下に記します。

そもそもrc.exeって何者?


MicrosoftによるとMicrosoft SDK の標準リソースコンパイラコマンドライン版だとのこと。
リソーススクリプトというものを受け取るとリソースオブジェクトファイルを生成すると言った動きをするらしい。
うん、さっぱりわからん。
もう少し調べてみたら、バージョン情報の付与やアイコンの設定等を行う際に利用されるビルドツールだということがわかりました。

要するに、バージョン情報やその他の情報を付与するためのツールがないよって言ってるわけだ。っと納得しました。

対応策


なんとなく問題はわかった気がするがないというよりは実行できないって言ってきている点に引っかかりました。
実行できないってことは存在はしているということになります。
となると、実行権限がないかファイルの場所が間違ってるかの2択であろうと考えられます。

対策1:root権限で実行してみる

Linuxでいうところのrootで実行すればいいのではないか、と考えて使っていたanaconda promptを管理者権限で実行してみます。
suやsudoが使えたら楽なんですがそんなもんWindowsさんには存在しませんしね...
これでとりあえず実行権限はあるはずなのでpipしてみました。
結果は惨敗。全く同じエラーが襲ってきます。
どうやら権限周りの問題ではなさそうな感じがします。
(この段階では私はファイルの場所を探すこともしておらず詳細な権限がどうなってたのか知りません)

対応策2:ファイルの権限を確認してみる

先ほどの惨敗から、私はファイルの場所を探すことにしました。
これで何かわかればいいのですが...
どうやら私の場合は「C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64」の中にありました。
権限の確認を行いましたが実行権を持っていることが判明、軽く頭がこんがらがります。
ファイルが存在してかつ実行権がある...マジで?
てっきり権限の問題だと思い込んでいた私は再度pipしました。
当然結果は同じ。わかってました。

対応策3:ファイルの場所を変える

正直、泣きそうになりました。これだけで3時間〜5時間くらい戦ってましたからね。
まぁ泣いててもしょうがない、どうするのが正解か考えましょう。
考えられることは実行してる場所が違うかなんかで使えないってあたりでしょうか...どこに置けばいいんだ?
悩んでた私はこちらのサイトを見つけました。

mugichoko.hatenablog.com

まさにやりたい事。
この記事にある通り「rc.exe」と「rcdll.dll」を”C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin“に移動させました。
これでpip実行。
結果としてエラーなくインストールすることができました。

最後に


無事インストールすることに成功しました。
この方の記事がなかったら今頃どうなってたのやら...きっと諦めて計算式を頑張ってプログラムしてたんでしょうか...スゴクタイヘンソウダナァ
どうも調べてた限りC++ Build Tools入れたら動きますって書いてる記事が多かったんですよね...
あとはWindows SDK入れろとか
Linuxマシンでやってたらこのエラーはなかったのかなぁ?なんてうっすらと思っています。
ただ、私のLinuxマシンバックライトが死んでしまってモニターが機能しないんですよね...おかげでログインすらできないからsshとかで入れないしでWindowsでやろうとしたんです。
修理に出すか外付けモニター用意しないとなぁとか思いつつ予算がないので見送ってます。
しばらくはWindowsマシンと仲良くやっていこうと思います。
まぁ入ったんで気を取り直して時系列分析やっていきたいと思います。
そもそもやろうと思った理由が前回訳した論文やその前に書いたLSTMの記事で出てきたGARCHやARMA、ARIMA、LSTMの株価予測やFXの検証をやってみたかったからなんですよね。
検証してみたらまた記事にしようと思います。
それでは今回はこの辺で