2010-07-25 2 views
5

I 성공적 새로운 Rcpp 모듈 용지의 지침에 따라Rcpp가 새 모듈을 찾는 방법?

("Rcpp 모듈 더크 Eddelbuettel 맹 프랑스와 함께 C++ 기능 클래스를 노출"의 예)을 컴파일 후에

require(Rcpp) 
yada <- Module("yada") 

R 불평 오류에 대한 :

Error in FUN("_rcpp_module_boot_yada"[[1L]], ...) : 
    no such symbol _rcpp_module_boot_yada in package .GlobalEnv 

나는, ''('궁시렁 ") 모듈'여전히 같은 오류 '를 호출하기 전에' '("/ yada.dll에// 경로 ") dyn.load'을 '퍼팅 시도했다.

온라인 Rcpp 모듈에 대한 정보는 거의 없습니다. 어떤 문제를 해결하는 방법을 알고 있습니까? 컴파일 된 모듈 dll을 특정 폴더에 두어야합니까?

예제 코드 :

const char* hello(std::string who){ 
    std::string result("hello ") ; 
    result += who ; 
    return result.c_str() ; 
} 

RCPP_MODULE(yada){ 
    using namespace Rcpp ; 
    function("hello", &hello) ; 
} 

답변

2

외부 라이브러리 ("yada.dll")에서 모듈을로드하려면, 당신은 모듈에 패키지 인수를 제공해야합니다() 함수 :

yada <- Module("yada", PACKAGE = "yada") 

전체 예제는 다음과 같습니다 (Linux에서 테스트 한 결과, Windows에서는 유사하다고 생각합니다).

C++ :

#include <Rcpp.h> 

const char* hello(std::string who){ 
    std::string result("hello ") ; 
    result += who ; 
    return result.c_str() ; 
} 

RCPP_MODULE(yada){ 
    using namespace Rcpp ; 
    function("hello", &hello) ; 
} 

R :

require(Rcpp) 
dyn.load("yada.so") 
yada <- Module("yada", PACKAGE = "yada") 
yada$hello("world") 
+1

난 그냥> 모듈'수 ("궁시렁", "궁시렁") 패키지에서 "궁시렁"라는 초기화되지 않은 모듈 "궁시렁" > is.loaded ("궁시렁") [1] 거짓 – highBandWidth

관련 문제