【发布时间】:2016-07-19 22:06:53
【问题描述】:
我最近发现了这个 C 库 (http://libxlsxwriter.github.io/),并尝试将它与 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: fatal error: xlsxwriter/third_party/queue.h: No such file or directory
#include "xlsxwriter/third_party/queue.h"
但当我检查时,文件显然在那里。
关于如何将此 C 库与 R 连接的任何建议?在这一点上,我只是想让 hello-world 示例从 R 中运行。
在inst 文件夹中使用xlsxwriter 开始构建一个包,然后尝试编写一个makevars 以使xlsxwriter 正确编译,这是不是更好的方法?我知道我必须包含PKG_CPPFLAGS = -I../inst/libxlsxwriter,但我猜我需要的不止这些。
【问题讨论】:
-
查看
R CMD config寻找SHLIB_*变量;在运行R CMD SHLIB之前将它们设置为指向适当的位置。
标签: c r makefile libxlsxwriter