R中的GSL库 - 未找到符号

时间:2016-08-25 19:16:43

标签: r gsl

我在C中的知识作为新用户非常有限,我有一些用C编写的代码,我需要在R中使用。我尝试使用" gsl_integration"图书馆。因为代码需要传递给可能没有安装GSL库的不同人员,所以我创建了我的" integration.h"包含" gsl_integration"中所有函数和依赖项的文件。图书馆。我可以使用

编译我的code.c文件
$ R CMD SHLIB code.c

这是我得到的输出

 -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG  
-I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include
-fPIC  -Wall -mtune=core2 -g -O2  -c code.c -o code.o
clang -dynamiclib -Wl,-headerpad_max_install_names -undefined
 dynamic_lookup -single_module -multiply_defined suppress 
-L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/lib -o code.so code.o 
-F/Library/Frameworks/R.framework/.. 
-framework R -Wl,-framework -Wl,CoreFoundation

当我尝试dyn.load" code.so" R中的文件我收到以下错误

Error in dyn.load("code.so") : 
  unable to load shared object '/Users/Thodoris/Desktop/Int_C/code.so':
  dlopen(/Users/Thodoris/Desktop/Int_C/code.so, 6): Symbol not found: _gsl_integration_qags
  Referenced from: /Users/Thodoris/Desktop/Int_C/code.so
  Expected in: flat namespace
 in /Users/Thodoris/Desktop/Int_C/code.so

我想R试图找到图书馆的方式有问题吗? 我有什么想法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

你没有与GSL联系。

您可能想要模仿的一个软件包是我的RcppZiggurat软件包,它执行此操作:

PKG_LIBS = `$(R_HOME)/bin/Rscript -e "RcppGSL:::LdFlags()"`

即它有一个函数,通过调用我的RcppGSL包来返回正确的库位置,该包在其包启动时学习该位置一次。