Compiler Error: Undefined symbols for architecture x86_6 when using Rccp classes.

Compiler Error: Undefined symbols for architecture x86_6 when using Rccp classes.

我刚刚开始习惯使用 R 中的 Rcpp 包。我通常在使用 Rcpp 时构建一个包。然而,为了调试和测试,我希望能够 运行 c++ 代码而不总是涉及 R。因此,我尝试在 C++ 程序中使用 Rccp 类 。示例

#include <Rcpp.h>

int main(int argc, const char * argv[])
{
    Rcpp::NumericVector vec(0);

    return 0;
}

产生以下错误:

Undefined symbols for architecture x86_64:
  "_REprintf", referenced from:
      Rcpp::Rstreambuf<false>::xsputn(char const*, long) in main-fe5efc.o
      Rcpp::Rstreambuf<false>::overflow(int) in main-fe5efc.o
  "_R_FlushConsole", referenced from:
      Rcpp::Rstreambuf<false>::sync() in main-fe5efc.o
      Rcpp::Rstreambuf<true>::sync() in main-fe5efc.o
  "_R_GetCCallable", referenced from:
      dataptr(SEXPREC*) in main-fe5efc.o
  "_R_NilValue", referenced from:
      Rcpp::PreserveStorage<Rcpp::Vector<14, Rcpp::PreserveStorage> >::PreserveStorage() in main-fe5efc.o
      Rcpp::PreserveStorage<Rcpp::Vector<14, Rcpp::PreserveStorage> >::~PreserveStorage() in main-fe5efc.o
      Rcpp::Rcpp_ReleaseObject(SEXPREC*) in main-fe5efc.o
      Rcpp::Rcpp_PreserveObject(SEXPREC*) in main-fe5efc.o
  "_R_PreserveObject", referenced from:
      Rcpp::Rcpp_PreserveObject(SEXPREC*) in main-fe5efc.o
  "_R_ReleaseObject", referenced from:
      Rcpp::Rcpp_ReleaseObject(SEXPREC*) in main-fe5efc.o
  "_Rf_allocVector", referenced from:
      Rcpp::Vector<14, Rcpp::PreserveStorage>::Vector(int const&) in main-fe5efc.o
  "_Rf_isNull", referenced from:
      Rcpp::Rcpp_ReplaceObject(SEXPREC*, SEXPREC*) in main-fe5efc.o
  "_Rf_xlength", referenced from:
      void Rcpp::internal::r_init_vector<14>(SEXPREC*) in main-fe5efc.o
  "_Rprintf", referenced from:
      Rcpp::Rstreambuf<true>::xsputn(char const*, long) in main-fe5efc.o
      Rcpp::Rstreambuf<true>::overflow(int) in main-fe5efc.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我使用以下命令编译:

clang++ main.cpp -I/Library/Frameworks/R.framework/Resources/include -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include -I"/Library/Frameworks/R.framework/Versions/3.1/Resources/library/Rcpp/include"

我正在 Mac 使用 Xcode 6. 寻找解决方案 我已经从源代码安装了 Rcpp 和 RInside,但它没有解决问题。感谢您的帮助!

Rcpp 是一个 R 扩展。没有 R 就无法工作。

你只是做出了一个勇敢的假设,认为你可以做你正在做的事。结果证明那个假设是不正确的。

如果您想构建新的 'main' 程序,您最接近的选择是使用嵌入 R 的 RInside。从它的众多示例开始,特别是 examples/standard/