将C库链接到R
我最近发现了这个C库(),并尝试将它与R一起使用 让C库自己工作并不困难。我使用将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
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
之前,将这些设置为指向适当的位置。