我正在Rcpp软件包中使用Asio,因此正在使用软件包AsioHeaders。
我在软件包的Description文件的“ LinkingTo”部分添加了BH和AsioHeaders。我还添加了评论
// [[Rcpp::depends(BH)]]
// [[Rcpp::depends(AsioHeaders)]]
在我的代码中。因此,通常,在编译软件包时,链接应该没问题。
这是我在Linux上编译它的时间。但是,当尝试在Windows上进行编译时,出现了链接错误,这些错误可以通过链接-lws2_32
和-lwsock32
来解决。
因此,我想知道是否应该编辑Makevars
文件,以使它们在Windows上链接但在Linux上被忽略,或者我使用AsioHeaders做错了什么?
答案 0 :(得分:2)
此处为AsioHeaders维护者。快速提问:
哪个版本的AsioHeaders?它刚刚在CRAN更新。这是新版本的变化吗(这会让我感到惊讶)?
确保您没有意外使用Boost 的Asio功能,这需要链接。使用AsioHeaders查看这三个软件包。
如果您的软件包确实是仅标头,那么LinkingTo:
就足够了。 R将为您找到头目录。特别是,您不需要src/Makevars*
中的链接说明,因为,仅标题即可。
此外,您可能在上面的C ++注释中用//
表示正斜杠...