2013-05-16 9 views
5

は、私は自分のパッケージを達成するには、次の手順を使用しRcpp:定義されたパッケージでこの機能を実行できないのはなぜですか?</p> <pre><code>#include <Rcpp.h> using namespace Rcpp; // [[Rcpp::export]] int foo() { return 6; } </code></pre> <p>2)私はパッケージにそれを作るためにスケルトンを使用します:私は次のように非常に単純な関数を記述しようと</p> <p>1):

Rcpp.package.skeleton("newpackage",example_code=FALSE,cpp_files=c("New.cpp")) 

3)私はコマンドを使用してCPPを実行します。

source("~/newpackage/src/New.cpp") 

私はRの関数を呼びたいこの後

compileAttributes(pkgdir="/home/tw72/newpackage",verbose = getOption("verbose")) 

:4)パッケージをロードするcompileAttributesを実行

foo <- function() 
{ 
.Call("foo",PACKAGE="newpackage") 
} 

その後、エラーがある:

Error in .Call("foo", PACKAGE = "newpackage") : 

"foo" というありませんパッケージ "newpackage"の.Call()で利用可能

私は同じproblemに遭遇しましたが、何が起こるか把握していない。 私を助けることができますか?私の上記のステップで何が問題なのですか?ありがとう。私の頭の上から

答えて

0

は、それはかなり完全に見えますが、両方Rcpp modulesRcpp attributesをオンにする必要があるよう

R> Rcpp.package.skeleton("newpackage", 
+      example_code=FALSE,  ## useful but not required 
+      cpp_files=c("New.cpp"), ## may not be required 
+      attributes=TRUE)   ## this is important 
R> 

を試してみます。

その後、必要な操作を行うと機能します。compileAttributes

編集:さらに簡単です。上記のRcpp.package.skeleton()を実行してください。つまり、には、attributes=TRUEが追加されています。パッケージをインストールしてテストします。

+1

ありがとうございます。 私が試みる私は FOO <使用する場合 - 関数(){ は.call( "FOO"、PACKAGE = "newpackage") }を私は同じ問題に会いました。しかし、私はこのように変更したとき: foo < - function() { .Call( "newpackage_foo"、PACKAGE = "newpackage") } これは機能します。 – user2380245

+0

複数のC++ファイルがある場合はどうなりますか? – qed

+0

Rのすべての変数はベクトルです。 'cpp_files'にすべてリストしてください。 –

関連する問題

 関連する問題