我最近发现了这个C库(http://libxlsxwriter.github.io/),并试图将它与R一起使用。
让C库自己工作并不困难我使用zlib
下载了libxlsxwriter
和msys2
,并在make
文件夹中运行了libxlsxwriter
。
现在我可以运行这个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运行。
开始构建一个
xlsxwriter
文件夹中有inst
的包,然后尝试编写一个makevars
以使xlsxwriter
正确编译,这是一种更好的方法吗我知道我必须包括PKG_CPPFLAGS = -I../inst/libxlsxwriter
但我想我需要的不止这些。 最佳答案
你可能想试试Continuum的水蟒R包装他们相当直接地使用MSYS2包toolchain包称为m2w64 toolchain,posix包有时对于构建R包也很有用。conda install -c r r-essentials m2w64-toolchain posix
免责声明:我为Continuum工作,但我也为MSYS2工作。