2011-06-22 21 views
2

こんにちは私は、事前コンパイルされた静的ライブラリと単一のヘッダーファイルを使用してRパッケージを構築しようとしています。そうする最善の方法は何ですか?スタティックライブラリを使用してRエクステンションを書き込む方法

(srcからコンパイルされたRパッケージを作成する場合のみ)情報が見つかりませんでしたので、拡張srcディレクトリーに薄いC++ラッパークラスを書くことに決めました。私はまた、ライブラリに必要なヘッダファイルをsrcディレクトリに追加しました。理論的にはコンピュータ上のライブラリにリンクすることができました(私が推測します)。しかし、私は静的ライブラリを私のパッケージとともに出荷したいと思っています。これはまた、リンクを簡単にする必要があります(パッケージディレクトリにハードコードすることもできます)。

アイデア?

おかげ

答えて

2

まずオフは、コンパイルされたソースコードを含むRへの拡張パッケージはdyanmically連結される - Rは、実行時にそれをロードしました。

あなたのコードのいずれかの外部の依存関係は、拡張パッケージに静的にリンクできます。そのためには、完全なパスをPKG_LIBS引数に持つ静的ライブラリをリストするだけで、静的リンクを強制する標準的な方法を試すこともできます。

オフライン私は、このアプローチを使ったCRANパッケージの例を考えることはできません。あるいは、私はスタンザとして提案したいと思います。

+0

こんにちはダーク、これは私が現在やっていることです。しかし、それはR内のpackage.installを呼び出すと外部依存関係をリンクするだけで、R CMDビルドxを発行するときは外部依存関係をリンクしません。したがって、私が.tar.gzを別のコンピュータに出荷すると、外部依存関係を見つけることができません。それが可能であれば、パッケージの中に入れたいのですが? – Cookie

+0

あなたのソースに静的ライブラリを組み込み、PKG_LIBSで正しく参照する必要があります。言うまでもなく、実際にはこのように配布することはできません。 CRANはその静的ライブラリへのソースを必要とします。 –

+0

乾杯、ありがとう。 – Cookie

関連する問題