c++ - 在 R 中编译 C++ 代码不再有效

标签 c++ r macos gcc osx-mavericks

我开始说我是编程新手,然后我不确定我是否能够很好地解释我的问题。

我写了一些 C++ 代码,这些代码被一些 R 函数加载和使用。

为了编译我使用的代码:

R  CMD SHLIB   MyCode.cpp

然后我用 R 加载了库

dyn.load("MyCOde.so")  

有时我还构建了一个 R 包,我能够将它加载到 R 中。

如果我在 Mac 上用 mountain lion 做所有这些事情,一切正常,但现在我切换到 mavericks,我遇到了一些问题。 R CMD SHLIB MyCode.cpp 命令有效,但是当我使用 dyn.load("MyCOde.so") 时,我得到以下文本:

Errore in dyn.load(paste(dir_function, "MyCOde.so", sep = "")) : 
  unable to load shared object 'MyCOde.so':
  dlopen(MyCOde.so, 6): Symbol not found: __ZNSt8ios_base4InitC1Ev
  Referenced from: MyCOde.so
  Expected in: flat namespace
 in MyCOde.so

此外,如果我尝试在 R 中加载包,我会得到以下信息

ld: warning: directory not found for option '-L/usr/local/lib/gcc/x86_64-apple-darwin13.0.0/4.8.2'
ld: library not found for -lquadmath
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [MyCode.so] Error 1

有人可以帮助我吗?

最佳答案

基于有用的网站: thecoatlessprofessor

在您的终端 shell 中输入:

curl -O http://r.research.att.com/libs/gfortran-4.8.2-darwin13.tar.bz2
sudo tar fvxz gfortran-4.8.2-darwin13.tar.bz2 -C /

这将创建您需要像以前一样继续编译的内容。

关于c++ - 在 R 中编译 C++ 代码不再有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25224325/

相关文章:

根据字符串变量对行重新排序

c++ - dylib 中的重载运算符删除替换了 OSX 中的系统运算符

ruby - RVM 安装问题 - 无法执行端口 (autoconf)

qgis - 指向派生类对象的指针

c++ - 插入排序优化

r - 如何在R中拟合具有两个主成分的线性回归模型?

r - 带有 utf-8 文本的脚本与 Windows 中的 RStudio 和命令行的运行方式不同

macos - 在 NSTableView 中应用 NSCheckBox 状态

c++ - Windows 手机 : Log to console

c++ - 传递一个包含数字的数组作为参数 c++