2011-10-12 16 views
3

私は.cppファイルを作成しました。これをRおよびRCPPで使用するために.dllにコンパイルします。 (インラインパッケージを使用せずに)。 私はWinXPとR 2.13.2とRCPP 0.9.7を使用しています。私はRtools 2.14を使用しています。RとRCPPを使用してDLLをコンパイルするにはどうすればよいですか?

  1. minGWの検索パスにRcpp.hを含めるにはどうすればよいですか?私が必要とするファイルは、C:¥Program Files¥R¥R-2.13.2¥library¥Rcpp¥includeにあります。しかし、私はtoを "search path"に "追加"することができませんでした。

  2. 私は一時的な「ハック」に疲れました。私はC:¥Program Files¥R¥R-2.13.2¥library¥Rcpp¥includeの内容をminGWのインクルードディレクトリにコピーしました。コンパイル/リンク処理はmyfile.cppからmyfile.oになりますが、myfile.dllをコンパイルする前にエラーが発生します。

私はC追加しました:私のPATHに\プログラムファイル\ R \ R-2.13.2 \ビンの\ I386を、私はWinXPのコマンドプロンプトからR CMB SHLIBのmyfile.cppのを呼び出しています。

私は何をしていますか?

答えて

11

迅速なポイントのカップル:MinGWのから

  1. gccg++コンパイラはちょうどgcc家族から他のコンパイラのように振る舞います。つまり、「検索パスに追加」はありません。そのパスとディレクトリを追加するには-I/some/dirスイッチを使用します。同様に、-L/some/libはそのディレクトリをリンカパスに追加します。

  2. あなた本当にMakefileを使用します。私たちのRcppパッケージには多くの例があります。 ConvolveBenchmarksディレクトリのMakefileを見ることができます。

  3. しかし、本当に欲しいのは、いわゆる「パッケージ」を使用することです。私たちには、これに専念するビュレットRcpp-packageがあります。あなたのためにパッケージを作成するrcpp.package.skeleton()関数を呼び出すのと同じくらい簡単なことができます---ダイナミックライブラリは副作用として作成されます。

  4. このすべてがあまりにも混乱している場合は、まずinlineに慣れてください。引数verbose=TRUEを使用して、inlineがダイナミックライブラリを構築する方法を確認してください。

  5. 最後に、RCPPではなくRcppと綴ります。

rcpp-develメーリングリストも役立つ情報源です。

+0

迅速な回答ありがとうございます。統計ソフトウェアの紙のあなたの雑誌から「インライン」の例を再現しようとしたとき、私は、エラーが発生しました。 私は、次のコードを実行しています: SRC < - ' \t \t Rcpp :: NumericVectorのXA(A); \t \t Rcpp :: NumericVector xb(b); \t \t int n_xa = xa.size()、n_xb = xb。サイズ(); \t \t \t \t Rcpp :: NumericVector xab(n_xa + n_xb - 1); \t \t XAB [iがjは+] + = XA [I] * XB [ \t \tため(J ++ INT J = 0; J power

+0

私は次のエラーを取得: コンパイル引数: C :/R/R-2.13.2/bin/i386/R CMD SHLIB file99a82.cpp 2> file99a82.cpp.err.txt コンパイル時のエラー:ソースコードエラーまたはコンパイラ設定エラー! compileCode(f、code、language、language、verbose = verbose)のエラー: コンパイルエラー、関数/メソッドが作成されていません! さらに、警告メッセージ: コマンド 'C:/R/R-2.13.2/bin/i386/R CMD SHLIB file99a82.cpp 2> file99a82.cpp.err.txt'がステータス1を実行しています – power

+0

どこが見つかりましたか実際のエラーメッセージを読むには、この 'file99a82.cpp.err.txt'? – power

関連する問題