2010-07-25 13 views
5

Sau khi tôi biên soạn thành công một mô-đun Rcpp mới (ví dụ từ "Vạch trần C++ chức năng và các lớp học với các module Rcpp, Dirk Eddelbuettel Romain Francois")Làm sao để Rcpp tìm được một mô-đun mới?

Tiếp theo các hướng dẫn trong bài báo,

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

R phàn nàn về lỗi:

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

tôi đã thử đặt '' dyn.load ("/ path/to/yada.dll") '' trước khi gọi '' module ("yada") '', vẫn còn những lỗi tương tự.

Có rất ít thông tin về Mô-đun của Rcpp trực tuyến. Có ai biết cách giải quyết vấn đề không? Tôi có nên đặt dll module biên dịch trong một số thư mục specifiec?

Đoạn mã ví dụ:

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) ; 
} 

Trả lời

2

Để nạp module từ thư viện bên ngoài ("yada.dll"), bạn phải cung cấp các luận cứ GÓI đến Module() chức năng:

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

Ví dụ hoàn chỉnh trông giống như sau (được thử nghiệm dưới Linux, tôi đoán nó hoạt động tương tự trong 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

tôi chỉ nhận được '> Module ("yada", "yada") Module chưa được khởi tạo có tên là "yada" từ gói "yada" > is.loaded ("yada") [1] FALSE' – highBandWidth

Các vấn đề liên quan