web-dev-qa-db-ja.com

rtools40とR 4.0を使用してRDCOMClientを構築できません

しばらく前に、R 3.6( https://github.com/dkyleward/RDCOMClient )で動作するようにRDCOMClientパッケージのフォークを作成しました。 R 4.0では機能しないため、人々は再び問題に直面しています。この問題は簡単に修正できるとは思えないので、いくつかの助けを期待しています。

RstudioをR 3.6(およびrtools35)に戻すと、インストール後にdevtools::install_github()を使用してパッケージを使用できます。 R 4.0(およびrtools40)を試すと、パッケージがビルドされ、COMを介してアプリケーションに接続できます。以下のコードの最初の行は機能し、xlはCOMポインターです。ただし、それを使用して何かを実行しようとすると(Excelを表示可能にするなど)、Rがクラッシュします。

xl <-  RDCOMClient::COMCreate("Excel.Application")
xl[["Visible"]] <- TRUE

ここでも、上記はR 3.6で機能します。

以前のrtoolsでビルドを続ける方法はありますか?私は https://github.com/r-windows/rtools-backports#readme に遭遇しました。これは、rtools35を使用してパッケージをビルドし続けることについて話しているので、希望はありますが、方法がわかりませんそれを実現するために。

あるいは、問題を解決するRまたはcppコードに小さな変更を加えることができれば、私はすべての責任を負います。しかし、私はcppの初心者です。

2
Kyle Ward

Rikの回答は非常に役に立ち、バージョンが機能するようになりました。しかし、それに一日を費やした後、私はそれを改善することができました。もう一度やらなくてはいけないのでここに入れておきます。主な改善点は、32ビットアーキテクチャと64ビットアーキテクチャの両方で動作するパッケージを構築できることです。デフォルトでは、Rは両方をインストールします。これにより、依存パッケージをインストールするときに作業が容易になります。

最初の2つの手順は同じです。

R-4.0.0をインストールします( https://cran.r-project.org/bin/windows/base/old/4.0.0/R-4.0.0-win.exe

Rtools35( https://cran.r-project.org/bin/windows/Rtools/Rtools35.exe )をディレクトリc:\ Rtoolsにインストールします

(私のように)rtools40をすでにインストールしている場合は、_RTOOLS40_HOME_という名前のシステム環境変数が作成されます。最初のステップは、それを次のように変更することです。

_C:\rtools_

Rtools40をインストールしていない場合は、_RTOOLS40_HOME_システム環境変数を作成します。

Makeファイルには、まだ2つの変更が必要です。これらはRのインストールディレクトリにあります。

_etc\x64\Makeconf_で、次の値を設定して、rtools35ディレクトリ構造と一致するようにアンダースコアを追加します。

_MINGW_PREFIX = /mingw_$(WIN)
BINPREF ?= "$(RTOOLS40_ROOT)/mingw_64/bin/"
_

_etc\i386\Makeconf_でも同じようにします。

_MINGW_PREFIX = /mingw_$(WIN)
BINPREF ?= "$(RTOOLS40_ROOT)/mingw_32/bin/"
_

しないでくださいBINPREFを環境変数として設定しないと、メイクファイルの変更が上書きされます(_RTOOLS40_HOME_のように)。これらが完了したら、Rikが概説したのと同じ手順で終了します。

Windowsコマンドプロンプトを開き、RDCOMClientサブディレクトリを含むディレクトリに移動して、次のように入力します。

_R CMD INSTALL RDCOMClient –-build RDCOMClient.Zip_

これにより、R-4.0.0のローカルインストールにRDCOMClientがインストールされ、さらに、次のコマンドを使用して他のシステムにインストールできるRDCOMClient_0.94-0.Zipファイルが作成されます。

install.packages("RDCOMClient_0.94-0.Zip", repos = NULL, type = "win.binary")

0
Kyle Ward
  1. R-4.0.0をインストールする
  2. Rtools35をインストールする
  3. $ R_HOME/etc/x64/Makeconfを編集します(R-4.0.0-x64の場合)
  4. RcmdインストールRDCOMClient
2
Unknown

上記の回答で説明した手順が正しい方向に進んでいることを確認できますが、いくつかの追加手順が必要になる場合があります。以下の手順で、R-4.0.0でインストールおよび実行できるWindowsバイナリファイルが生成されることも確認できます。

R-4.0.0をインストールします( https://cran.r-project.org/bin/windows/base/old/4.0.0/R-4.0.0-win.exe

Rtools35( https://cran.r-project.org/bin/windows/Rtools/Rtools35.exe )をディレクトリc:\ Rtoolsにインストールします

変更して$ R_HOME/etc/x64/Makeconf(R-4.0.0-x64の場合)を編集します

##  The rtools40 installer sets RTOOLS40_HOME, default to standard install path
RTOOLS40_HOME ?= c:/rtools40

##  The rtools40 installer sets RTOOLS40_HOME, default to standard install path
RTOOLS40_HOME ?= c:/rtools

https://github.com/omegahat/RDCOMClient からRDCOMClient-master.Zipをダウンロードします(緑色のクローンボタンをクリックして、ダウンロードZipを選択します)

RDCOMClientという名前のディレクトリに解凍します

次のPATH変数が設定されていることを確認します。

C:\Program Files\R\R-4.0.0\bin.x64 (assuming this is the location where R is installed)
C:\Rtools\bin
C:\Rtools\mingw_64\bin

次の値で環境変数BINPREFを追加します(最後のスラッシュが重要です)。

C:/Rtools/mingw_64/bin/

Windowsコマンドプロンプトを開き、RDCOMClientサブディレクトリを含むディレクトリに移動して、次のように入力します。

R CMD INSTALL RDCOMClient –-build RDCOMClient.Zip

これにより、R-4.0.0のローカルインストールにRDCOMClientがインストールされ、さらに、次のコマンドを使用して他のシステムにインストールできるRDCOMClient_0.94-0.Zipファイルが作成されます。

install.packages("RDCOMClient_0.94-0.Zip", repos = NULL, type = "win.binary")
1
Rik Schoemaker