是否有可能在[win-builder](http://win-builder.r-project.org/)上构建一个使用Rcpp和Boost.Thread的R包?

时间:2013-10-29 07:17:10

标签: c++ multithreading r boost rcpp

最近,我制作了一个R包,它使用Rcpp集成R和C ++。 C ++库Boost用于多线程。我想知道我的包是否可以构建在http://win-builder.r-project.org/上?

我发现定义了一个Make变量--- BOOSTLIB ---,如http://cran.r-project.org/bin/windows/contrib/ThirdPartySoftware.html所示。

我尝试使用仅限标头的库,没关系,但是当我尝试使用单独编译的库Boost.Thread时,出现了“没有这样的文件”或“未定义的引用”错误。也许lib路径错了。但是,我几乎找不到任何关于胜利者的话。我是否只能使用仅限标头的库,或者有没有办法配置Makevars.win来查找单独编译的Boost.Thread库?

或许我可以在我的软件包中包含Boost源文件,但我认为这不是一个好方法,而且我也不知道如何包含(我还没有尝试过)。

我发现有一个R包BH试图为R提供Boost。这非常有帮助,我非常感谢BH的作者所做的工作,但是,当我问这个时,Boost.Thread不包括在内题。也许我可以等到他们包括Boost.Thread。但我现在更喜欢自己做,所以我可以学到更多。

1 个答案:

答案 0 :(得分:5)

目前BH维护者。几点:

  • 如上所述,我们的BH软件包仅提供Boost的(一部分)标头。包根据需要增长,我们可能会很快添加(因为我有一个请求)。

  • Win-Builder支持BOOSTLIB在Windows上设置标头;正如评论所说,我不认为它提供了图书馆。在RQuantLib我只使用它来获取QuantLib类所需的标题。

  • 有几个软件包在Windows上遇到了线程问题;同事BH-coauthors周杰伦和迈克在他们的bigmemory包及其支持包的背景下尝试过 synchronicity。但到目前为止,他们并没有提供Windows支持,因为Windows不同,并且在使用一些Unix惯用语时也很痛苦。

修改:以下是来自READMEsynchronicity

  

目前只在unix平台上支持同步性,因为   使用64位Windows的Boost或MinGW中的错误。我们会扩大   一旦解决了这些问题,就立即支持Windows。

     

如果要将此程序包与32位Windows一起使用,则可能是   可能(注释掉描述中的OS_type行)。

     

2010年10月30日。修改了配置以解决Solaris问题。

总之,没有预先构建的工具可供您依赖。