Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将C库链接到R_C_R_Makefile_Libxlsxwriter - Fatal编程技术网

将C库链接到R

将C库链接到R,c,r,makefile,libxlsxwriter,C,R,Makefile,Libxlsxwriter,我最近发现了这个C库(),并尝试将它与R一起使用 让C库自己工作并不困难。我使用msys2下载了zlib和libxlsxwriter,并在libxlsxwriter文件夹中运行了make 现在我可以运行这个Hello World示例,我们将其称为test.c: #include "xlsxwriter.h" void main() { lxw_workbook *workbook = workbook_new("myexcel.xlsx"); lxw_worksheet *works

我最近发现了这个C库(),并尝试将它与R一起使用

让C库自己工作并不困难。我使用
msys2
下载了
zlib
libxlsxwriter
,并在
libxlsxwriter
文件夹中运行了
make

现在我可以运行这个Hello World示例,我们将其称为
test.c

#include "xlsxwriter.h"
void main() {
  lxw_workbook  *workbook  = workbook_new("myexcel.xlsx");
  lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
  int row = 0;
  int col = 0;
  worksheet_write_string(worksheet, row, col, "Hello me!", NULL);
  workbook_close(workbook);
}
现在我可以通过运行以下命令编译
test.c

cc test.c -o test -lxlsxwriter -lz
然后运行可执行文件:

./test
现在我有一个Hello World excel文档

让它与R一起工作要困难得多。如果我只是跑:

R CMD SHLIB test.c
我得到了这个错误:
ibxlsxwriter/include/xlsxwriter/common.h:19:42:致命错误:xlsxwriter/third_party/queue.h:没有这样的文件或目录
#包括“xlsxriter/third_party/queue.h”

然而,当我检查时,文件显然在那里

关于如何将这个C库与R连接,有什么建议吗?在这一点上,我只是想让hello world示例从R运行


inst
文件夹中使用
xlsxwriter
开始构建一个包,然后尝试编写一个
makevars
以使
xlsxwriter
正确编译,这是一种更好的方法吗?我知道我必须包括
PKG\u CPPFLAGS=-I../inst/libxlsxwriter
,但我猜我需要的不仅仅是这些。

你可能想试试Continuum的Anaconda R软件包。他们相当直接地使用MSYS2软件包。工具链包称为m2w64工具链,posix包有时也可用于构建R包

conda安装-c r-essentials m2w64工具链posix


免责声明:我为Continuum工作,但我也在MSYS2上工作。

它不会很优雅,但如果4年内没有人找到优雅的解决方案,您也可以使用:

shell("cc test.c -o test -lxlsxwriter -lz")
这将有助于这一部分,也有助于任何小的访问xlsx功能的需要

在这一点上,我只是想让hello world示例从R运行


您可能已经知道了这一点,但以防万一您没有想到使用
shell()
命令。

检查
R CMD config
查找
SHLIB.*
变量;在运行
R CMD SHLIB
之前,将这些设置为指向适当的位置。