2016-04-01 21 views
2

başarısız: .Call içindeKaynak inşa ben kaynağından Rquantlib inşa ediyorum ve ben son zamanlarda bu sorunla karşılaşmış olan

Hata ("RQuantLib_setEvaluationDate", PAKETİ = "RQuantLib", evalDate): " RQuantLib_setEvaluationDate" kullanılamaz paketi için .Call() için "RQuantLib" hatası: paketi 'RQuantLib'

R versiyonu 3.2.3 (2015/12/10) Rcpp sürüm 0.12 R kodu yükleyemediğinde. 4

Kontrol ettim ve setEvaluationDate() uygun rcpp etiketleri var, bu yüzden neyin değiştiğinden emin değilsiniz. Dosyayı düzenlemedim. github itibaren

inline bool setEvaluationDate(QuantLib::Date evalDate) { 
    typedef SEXP(*Ptr_setEvaluationDate)(SEXP); 
    static Ptr_setEvaluationDate p_setEvaluationDate = NULL; 

} 

:

bool setEvaluationDate(QuantLib::Date evalDate); 
static SEXP RQuantLib_setEvaluationDate_try(SEXP evalDateSEXP) { 
BEGIN_RCPP 
    Rcpp::RObject __result; 
    Rcpp::traits::input_parameter<QuantLib::Date>::type  evalDate(evalDateSEXP); 
    __result = Rcpp::wrap(setEvaluationDate(evalDate)); 
    return __result; 
END_RCPP_RETURN_ERROR 
} 

cevap

1

Sen gerek

My rcpp fonksiyonu için verion inlcude oluşturulan: github sürümü gerçek bir çağrıdır puanlık bir satır içi versiyonu gibi görünüyor , büyük yükseltmelerden sonra Rcpp'nin tüm bağımlılarını yeniden derleyin. - biz g ++ derleyici değiştirdi 15.10 için Ubuntu 15.04 gitti

Örn yeni ABI'lı 5, yerel repo şeyi yeniden inşa etmek, bu senaryoyu ran:

#!/usr/bin/env r 

## installed packages 
IP <- installed.packages() 

## all local packages 
AP <- available.packages(contrib.url(getOption("repos")[["local"]])) 

## all packages known to us 
allAP <- available.packages() 

pkgs <- "Rcpp" 
deps <- tools::package_dependencies(packages=pkgs, db=IP, reverse=TRUE) 

## set of dependencies 
alldeps <- unique(sort(do.call(c, deps))) 
cat("Installing these:\n") 
print(alldeps) 

## this makes sense on Debian where no packages touch /usr/local 
libloc <- Sys.getenv("LIBLOC", unset="/usr/local/lib/R/site-library") 

install.packages(alldeps, lib=libloc) 

O zaman bir şey benzerdir Rcpp değişimlerinde, arayüzleri değiştirmemek konusunda oldukça başarılıydık. Ama şüphe ettiğinde, yeniden inşa et. Ayrıca, şüpheniz varsa compileAttributes()'u yeniden çalıştırın, ancak orada biraz değişti.

Düzenleme: İki sistemde de (yeniden) bir aksama olmadan takılıyorum.

Düzenleme 2: Ayrıca Ar isteminde doğrudan çalışır:

## what follows was one line in R and just broken up for display 
R> cppFunction("bool mySetEvalDate(QuantLib::Date d) " 
       "{ QuantLib::Settings::instance().evaluationDate() = d;" 
       " return true; }", depends="RQuantLib") 
R> mySetEvalDate(Sys.Date()) 
[1] TRUE 
R> 

Şimdi, niyet o zaman R verme hakkında tartışma bakmak gerekir C++ dan setEvaluationDate() aramaya olsaydı ve Rcpp Öznitelikleri vinyetlerinde C++. src/daycounter.cpp'daki kod, R

+0

için kullanılmıştır. Her şey Rcpp Örnekleri kurulduktan sonra başladı. Yukarıdaki tavsiyeye göre yeniden inşa ettim ve hala sevinç yok. Rcpp'i geçen yaz, neşe yokken geri aldım. Anahtar, arayüz ile gerçek fonksiyona karşı "inline" gibi görünüyor. –

+0

Bu akıl yürütme sırasına karşı argüman, test makinesinin çoğunun birden fazla (veya kutumda * tüm *) Rcpp ters bağımlılıkları yüklüdür. Bu olanlar * neredeyse kesinlikle * etkileşimleri gösterir, ama yapmazlar. –

+0

Gelişimden vazgeçtim ve her şeyin iyi olduğu Mac iş istasyonuma taşındım. Buraya geri döneceğim ve daha fazla zamanım olduğunda muhtemelen centos ortamımı yeniden yapılandıracağım. –

İlgili konular