gpt4 book ai didi

c++ - 包含 Rcpp.h 时出现 undefined reference 错误

转载 作者:行者123 更新时间:2023-11-30 04:06:19 25 4
gpt4 key购买 nike

我正在使用 64 位 Ubuntu,并且正在尝试编写 C++。

我发现如果我使用 #include <Rcpp.h> ,我什至不需要调用 R 命名空间中的任何函数,而且我已经收到 undefined reference 错误:

obj/x.o: In function `Rcpp::Rstreambuf<true>::xsputn(char const*, long)':
/usr/local/lib/R/site-library/Rcpp/include/Rcpp/iostream/Rstreambuf.h:61: undefined reference to `Rprintf'
obj/x.o: In function `Rcpp::Rstreambuf<false>::xsputn(char const*, long)':
/usr/local/lib/R/site-library/Rcpp/include/Rcpp/iostream/Rstreambuf.h:65: undefined reference to `REprintf'
obj/x.o: In function `Rcpp::Rstreambuf<true>::overflow(int)':
/usr/local/lib/R/site-library/Rcpp/include/Rcpp/iostream/Rstreambuf.h:70: undefined reference to `Rprintf'
obj/x.o: In function `Rcpp::Rstreambuf<false>::overflow(int)':
/usr/local/lib/R/site-library/Rcpp/include/Rcpp/iostream/Rstreambuf.h:74: undefined reference to `REprintf'
obj/x.o: In function `Rcpp::Rstreambuf<true>::sync()':
/usr/local/lib/R/site-library/Rcpp/include/Rcpp/iostream/Rstreambuf.h:79: undefined reference to `R_FlushConsole'
obj/x.o: In function `Rcpp::Rstreambuf<false>::sync()':
/usr/local/lib/R/site-library/Rcpp/include/Rcpp/iostream/Rstreambuf.h:83: undefined reference to `R_FlushConsole'

我已经安装了 r-base 和 r-base-dev。我通过以 root 身份运行 R 安装了 Rcpp 并执行了 install.package("Rcpp")

我使用 g++ 和 -I/usr/local/lib/R/site-library/Rcpp/include 编译 C++ 程序

我在这里错过了什么?感谢您的任何回复。

最佳答案

仅仅提取 Rcpp header 是不够的。您还需要 R header 并链接到 R 的库。你可以使用例如R CMD SHLIB 为您做这件事。

但是,我建议您:

  • 创建一个包含 LinkingTo: Rcpp 等的包...(请参阅 Rcpp 的文档)。
  • 在您的.cpp 文件中使用sourceCpp。参见 ?sourceCpp

关于c++ - 包含 Rcpp.h 时出现 undefined reference 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22959000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com