如何重用Rcpp编译的dll

问题描述 投票:0回答:1

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

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

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

有没有简单的方法来简单加载sourceCpp_123123.dllmyRCode1.r内的myRCode2.r

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

然而,当我尝试getLoadedDLLs时,我看到sourceCpp_123123.dll已被加载!

r rcpp
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.