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/
。
我刚刚开始习惯使用 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/
。