2

私は調査を行ってきましたが、Windows と Linux の両方の環境で動作するように、C 関数を呼び出す R パッケージをビルドする方法がよくわかりません。Linux マシンでパッケージをビルドしています。

one.C と two.C の 2 つの C ファイルがあり、package.skeleton(...) を使用した後、2 つのファイルを src ディレクトリに配置します。名前空間ファイルでは、次のコマンドを使用します: useDynLib(one,two)。これは正しいです?それとも、ファイル名の代わりに実際の関数名を入れる必要がありますか? 関数名をエクスポートする必要がありますか?

.so ファイルを src ディレクトリに置く必要がありますか? それとも自動的に作成されますか? .dll ファイルを必要とする Windows マシンでは動作しないのではないかと心配しています。

ご覧のとおり、私は少し混乱しています。助けてくれてありがとう。

4

2 に答える 2

4

標準の R マニュアルの 1 つは、R 拡張機能の記述です。このマニュアルの一部は、セクション5 システムおよび外国語インターフェースです。これはおそらくあなたの質問の大部分に答えます。動的にリンクされたライブラリ (dllまたはso) に関しては、オンザフライでビルドされます。C コードを含むパッケージを開発します。ライブラリをソースからインストールするR CMD INSTALL spamか (例: を使用)、バイナリ配布を作成すると、C コードが適切なライブラリ ファイルにコンパイルされます。

于 2012-10-23T05:17:15.570 に答える
4

同様の頭痛に直面して、Rcpp と組み合わせて C++ に切り替えました。Rcpp は、パッケージをコンパイルする際の頭痛の種をすべて処理してくれます。

http://dirk.eddelbuettel.com/code/rcpp.html

Rcpp を使用してパッケージをビルドする方法についての完全なビネットもあります。

http://dirk.eddelbuettel.com/code/rcpp/Rcpp-package.pdf

于 2012-10-23T10:35:35.083 に答える