4

最近做了一个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路径是错误的。但是,我几乎找不到任何关于 win-builder 的解释。我可以只使用仅标头库还是有办法配置 Makevars.win 以找到单独编译的 Boost.Thread 库?

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

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

4

1 回答 1

5

当前的BH维护者在这里。几点:

  • 如前所述,我们的BH包仅提供来自 Boost 的(一个子集)标头。该软件包根据需要增长,我们可能会尽快添加更多(因为我有一个请求)。

  • Win-BuilderBOOSTLIB也支持在 Windows 上设置标题;正如评论所说,我认为它不提供库。在RQuantLib 中,我只使用它来获取 QuantLib 类所需的标题。

  • 几个包已经解决了 Windows 上的线程问题;BH 的共同作者 Jay 和 Mike 在他们的bigmemory包及其支持包(例如 synchronicity )的上下文中进行了尝试。但到目前为止,它们还没有提供 Windows 支持,因为 Windows 是不同的,并且对一些 Unix 习语感到痛苦。

编辑:这是同步性的自述文件

由于 64 位 Windows 的 Boost 或 MinGW 中存在错误,目前仅在 unix 平台上支持同步性。解决这些问题后,我们将立即扩大对 Windows 的支持。

如果你想在 32 位 Windows 上使用这个包,这是可能的(注释掉DESCRIPTION 中的OS_type 行)。

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

不,简而言之,没有可供您依赖的预构建工具。

于 2013-10-29T12:38:35.097 回答