如何重用Rcpp编译的dll

时间:2014-04-19 18:38:14

标签: r rcpp

假设我使用f1编译了包含两个函数f2Rcpp::sourceCpp('myPath/myCode.cpp')的代码,并找到了创建的sourceCpp_123123.dll

现在假设我在Windows 7上有两个不同的批处理文件,它们分别运行RScript -e "source('myRCode1.r')"RScript -e "source('myRCode2.r')"。我希望每次运行f1时都可以使用f2RScript两个函数。

在运行其余代码之前,我当然可以将代码myRCode1.rmyRCode2.r放入Rcpp::sourceCpp('myPath/myCode.cpp')。另一种方法是将我的两个函数f1f2转换为一个包含更多参与过程的包。

是否可以轻松地在sourceCpp_123123.dllmyRCode1.r内加载myRCode2.r

我尝试使用dyn.load("myDllPath\sourceCpp_123123.dll")now=TRUElocal=TRUEnow=FALSE的各种排列和组合local=FALSE,但没有一个选项加载了这两个函数。

但是,当我尝试getLoadedDLLs时,我看到sourceCpp_123123.dll已加载!

1 个答案:

答案 0 :(得分:0)

正如我之前评论的那样,这是你想要使用包的地方。

或者如果你是那些反对包装的人之一(无论如何通常说服经验丰富的R用户/程序员几乎总是提倡使用包装),那么你可以作弊并将你的两个文件组合成一。

将两个函数集耦合在一起。您可能已经知道,您可以将C ++和R代码混合在一个文件中,因为我们一直在Rcpp Gallery中进行...