Bawiłem się przy tworzeniu pakietu R, który ma na celu wykorzystanie Rcpp w RStudio, ale staram się, aby rzeczy działały poprawnie z atrybutami Rcpp.Budowanie pakietów z Rcpp, Atrybuty niepoprawnie obsługiwane
Moje zrozumienia jak to działa jest dość wątpliwy, ale moje rozumienie jest następujący:
- w źródle C++ plików, można dodać RCPP atrybutów, na przykład znacznik
// [[Rcpp::export]]
wyznacza funkcję C++ dla eksportu , udostępnienie dla R. - Po wykonaniu Zbuduj pakiet,
Rcpp
następnie generuje odpowiedni kod C++ w plikuRcppExports.cpp
, a funkcje otoki w pliku źródłowym R.RcppExports.R
.
Wygląda na to, że nie działa prawidłowo (jak się spodziewam), gdy buduję swoją paczkę. Roxygen nie gra z tym dobrze podczas generowania pliku NAMESPACE (więc go wyłączyłem). Znacznik // [[Rcpp::export]]
wydaje się po prostu oznaczać funkcję eksportu do R, a nie oznaczać także funkcję do wyeksportowania do Przestrzeni nazw pakietów.
Co ważniejsze, znacznik Atrybut Rcpp // [[Rcpp::depends()]]
nie jest obsługiwany poprawnie. Jeśli skopiuję kod here do nowego pliku źródłowego i przebuduję mój pakiet, gcc
zgłasza błędy w pliku , informując, że identyfikator BigMatrix
jest niezadeklarowany, co wskazuje, że atrybut // [[Rcpp::depends(bigmemory)]]
nie jest obsługiwany poprawnie.
Ponieważ wiele rzeczy nie działa tak jak bym się spodziewał, Czego mi brakuje w moim rozumieniu tagów Attribute Rcpp?
Możesz po prostu napisać swój interfejs funkcji ręcznie, zamiast polegać na atrybutach Rcpp i jego pomocniku "compileAttributes()". Przecież masz tu specjalny przypadek (== potrzeba specjalnego nagłówka). –