c - 无法链接 Rcpp 的 cpp 文件中的相关头文件

标签 c r rcpp

基于本教程 - http://www.r-bloggers.com/using-r-callling-c-code-with-rcpp/ 我试图从 R 调用 C 函数。 C代码有以下依赖,编译C代码后完美运行

#include <json/json.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
#include <time.h>
#include <math.h>
#include <Rcpp.h>

现在,当我尝试加载 so 文件时,我看到以下错误。

dyn.load("storage.so")
Error in dyn.load("storage.so") : 
unable to load shared object '/home/algotree/Rcode/storage.so':
/home/algotree/Rcode/storage.so: undefined symbol: json_object_array_length

似乎 R 无法链接其余的头文件。

我该如何解决?

最佳答案

这与Rcpp无关(为此我们还提供了关于单独使用、在包中、通过内联等使用的充足文档)。

您似乎使用了 JSON 解析功能,但显然没有链接到与您包含的 header json/json.h 相对应的 JSON 解析器库。

除了这个问题在其代码示例中不完整因此无法重现之外,我在这里看到两个问题:

  1. 了解有关使用库的 C/C++ 程序的基本知识,以及

  2. 将其应用于 R 上下文。

当您根据 header 使用 JSON 和 Curl 时,您可以(并且可能应该)研究相应的包,例如 RJSONIORCurl .

如果你知道那里发生了什么并且了解机制,那么你可以使用 Rcpp提供您正在寻找的新功能。但只是通过抛出 Rcpp在混合中,这些问题不会自行解决。您需要了解如何包含 header 和链接库。

关于c - 无法链接 Rcpp 的 cpp 文件中的相关头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13900955/

相关文章:

c - 使用 PIC18 的 C18 库中的延迟函数进行长延迟

r - udunits2 R 安装 : udunits2. h 未找到

r - fread() 从存档中读取文件

performance - 我应该养成删除 R 中未使用的变量的习惯吗?

c - 在任何情况下我都忍不住在 switch 语句中使用 'continue' 吗?

c - 使用 mmap 重新编码 malloc 奇怪的段错误

组合不同模块中的枚举

r - 在 MacOS/CRAN 上构建 R 包时包含 boost tokenizer.hpp 文件时出错

rcpp - 在 Rcpp 中,如何从 C 到 R 中获取用户定义的结构

c++ - 在 Windows 上使用与 Rtools 和 Rcpp 包含的版本不同的 gcc 版本