gpt4 book ai didi

c - Windows 上 C 语言的 xlsxwriter 安装

转载 作者:行者123 更新时间:2023-11-30 16:47:42 43 4
gpt4 key购买 nike

我对 C 相当陌生,我正在尝试操作相同的数据文件并将它们导出到 Excel 文件中。

类似此案例Running libxlsxwriter on Windows ,我正在尝试使用 MSYS2 在 Windows 上安装 libxlsxwriter。

到目前为止我已经做了:

1) 安装了 MSYS2 64 位以及安装说明

2) 从 MSYS2 终端 pacman -S git gcc make zlib-devel

3)还有:

git clone https://github.com/jmcnamara/libxlsxwriter.git

MichKon@MichKon-PC MSYS ~
$ cd libxlsxwriter

MichKon@MichKon-PC MSYS ~/libxlsxwriter
$ make
make[1]: Entering directory '/home/MichKon/libxlsxwriter/third_party/minizip'
make[1]: Leaving directory '/home/MichKon/libxlsxwriter/third_party/minizip'
make[1]: Entering directory '/home/MichKon/libxlsxwriter/third_party/tmpfileplus'
make[1]: Leaving directory '/home/MichKon/libxlsxwriter/third_party/tmpfileplus'
make[1]: Entering directory '/home/MichKon/libxlsxwriter/src'
make[1]: Leaving directory '/home/MichKon/libxlsxwriter/src'


MichKon@MichKon-PC MSYS ~/libxlsxwriter
$ make install

MichKon@MichKon-PC MSYS ~/libxlsxwriter
$ cc myexcel.c -o myexcel -lxlsxwriter
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x1bc9): undefined reference to `crc32'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x1bc9): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `crc32'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x1d1f): undefined reference to `deflate'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x1d1f): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `deflate'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x2280): undefined reference to `deflate'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x2280): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `deflate'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x238a): undefined reference to `deflateEnd'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x238a): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `deflateEnd'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x25e6): undefined reference to `deflateEnd'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x25e6): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `deflateEnd'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x2649): undefined reference to `deflateEnd'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x2649): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `deflateEnd'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x2e06): undefined reference to `deflateInit2_'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x2e06): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `deflateInit2_'
collect2: error: ld returned 1 exit status

MichKon@MichKon-PC MSYS ~/libxlsxwriter
$ ./myexcel
bash: ./myexcel: No such file or directory

MichKon@MichKon-PC MSYS ~/libxlsxwriter
$ cc myexcel.c -o myexcel -lxlsxwriter
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x1bc9): undefined reference to `crc32'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x1bc9): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `crc32'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x1d1f): undefined reference to `deflate'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x1d1f): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `deflate'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x2280): undefined reference to `deflate'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x2280): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `deflate'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x238a): undefined reference to `deflateEnd'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x238a): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `deflateEnd'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x25e6): undefined reference to `deflateEnd'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x25e6): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `deflateEnd'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x2649): undefined reference to `deflateEnd'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x2649): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `deflateEnd'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x2e06): undefined reference to `deflateInit2_'
/usr/lib/../lib/libxlsxwriter.a(zip.o):zip.c:(.text+0x2e06): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `deflateInit2_'
collect2: error: ld returned 1 exit status

MichKon@MichKon-PC MSYS ~/libxlsxwriter
$ ./myexcel
bash: ./myexcel: No such file or directory

MichKon@MichKon-PC MSYS ~/libxlsxwriter
$ xdg-open myexcel.xlsx
bash: xdg-open: command not found

MichKon@MichKon-PC MSYS ~/libxlsxwriter
$ cc myexcel.c -o myexcel -I /path/to/libxlsxwriter/include
/tmp/ccp8qMT9.o:myexcel.c:(.text+0x15): undefined reference to `workbook_new'
/tmp/ccp8qMT9.o:myexcel.c:(.text+0x15): relocation truncated to fit: R_X86_64_PC 32 against undefined symbol `workbook_new'
/tmp/ccp8qMT9.o:myexcel.c:(.text+0x2a): undefined reference to `workbook_add_worksheet'
/tmp/ccp8qMT9.o:myexcel.c:(.text+0x2a): relocation truncated to fit: R_X86_64_PC 32 against undefined symbol `workbook_add_worksheet'
/tmp/ccp8qMT9.o:myexcel.c:(.text+0x64): undefined reference to `worksheet_write_string'
/tmp/ccp8qMT9.o:myexcel.c:(.text+0x64): relocation truncated to fit: R_X86_64_PC 32 against undefined symbol `worksheet_write_string'
/tmp/ccp8qMT9.o:myexcel.c:(.text+0x70): undefined reference to `workbook_close'
/tmp/ccp8qMT9.o:myexcel.c:(.text+0x70): relocation truncated to fit: R_X86_64_PC 32 against undefined symbol `workbook_close'
collect2: error: ld returned 1 exit status

MichKon@MichKon-PC MSYS ~/libxlsxwriter
$ ./myexcel
bash: ./myexcel: No such file or directory

MichKon@MichKon-PC MSYS ~/libxlsxwriter
$ cc myexcel.c -o myexcel -I /path/to/libxlsxwriter/lib/libxlsxwiter.a -lz
/tmp/ccgsiylm.o:myexcel.c:(.text+0x15): undefined reference to `workbook_new'
/tmp/ccgsiylm.o:myexcel.c:(.text+0x15): relocation truncated to fit: R_X86_64_PC 32 against undefined symbol `workbook_new'
/tmp/ccgsiylm.o:myexcel.c:(.text+0x2a): undefined reference to `workbook_add_worksheet'
/tmp/ccgsiylm.o:myexcel.c:(.text+0x2a): relocation truncated to fit: R_X86_64_PC 32 against undefined symbol `workbook_add_worksheet'
/tmp/ccgsiylm.o:myexcel.c:(.text+0x64): undefined reference to `worksheet_write_string'
/tmp/ccgsiylm.o:myexcel.c:(.text+0x64): relocation truncated to fit: R_X86_64_PC 32 against undefined symbol `worksheet_write_string'
/tmp/ccgsiylm.o:myexcel.c:(.text+0x70): undefined reference to `workbook_close'
/tmp/ccgsiylm.o:myexcel.c:(.text+0x70): relocation truncated to fit: R_X86_64_PC 32 against undefined symbol `workbook_close'
collect2: error: ld returned 1 exit status

MichKon@MichKon-PC MSYS ~/libxlsxwriter
$ make myexcel
cc myexcel.c -o myexcel
/tmp/ccMI33kF.o:myexcel.c:(.text+0x15): undefined reference to `workbook_new'
/tmp/ccMI33kF.o:myexcel.c:(.text+0x15): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `workbook_new'
/tmp/ccMI33kF.o:myexcel.c:(.text+0x2a): undefined reference to `workbook_add_worksheet'
/tmp/ccMI33kF.o:myexcel.c:(.text+0x2a): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `workbook_add_worksheet'
/tmp/ccMI33kF.o:myexcel.c:(.text+0x64): undefined reference to `worksheet_write_string'
/tmp/ccMI33kF.o:myexcel.c:(.text+0x64): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `worksheet_write_string'
/tmp/ccMI33kF.o:myexcel.c:(.text+0x70): undefined reference to `workbook_close'
/tmp/ccMI33kF.o:myexcel.c:(.text+0x70): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `workbook_close'

collect2:错误:ld 返回 1 退出状态make: *** [: myexcel] 错误 1

MichKon@MichKon-PC MSYS ~/libxlsxwriter
$

所以最后好像没起作用。没有创建 exe 文件。看起来最后三个命令是命令编译,但是头文件有问题......

感谢您的宝贵时间

编辑:

所以我更深入地研究了这个解决方案:Running libxlsxwriter on Windows因为看来我和卡尔有类似的问题。

Make 不起作用,除非我将 .c 文件放入预定义文件之一(例如示例)中,然后通过命令窗口我可以编译并运行它。但我想知道是否可以采取任何措施才能正常编译和运行这些文件,就像通过 Devc++ 的任何其他 C 文件一样。

我尝试在用户和计算机路径(环境变量)中添加C:\msys64\usr\bin,但似乎不起作用。

感谢您的宝贵时间!

最佳答案

它应该按照instructions工作。我重新运行它们进行检查,一切正常:

# Install MYSYS2 from http://www.msys2.org/
# For the example below I used msys2-x86_64-20161025.exe

# Run the MYSYS2 Shell and install the dependencies:
$ cd /tmp
$ pacman -S git gcc make zlib-devel

# Clone, make, and install libxlswriter:
$ git clone https://github.com/jmcnamara/libxlsxwriter.git
$ cd libxlsxwriter/
$ make
$ make install

# Create a sample C test file in another directory:
$ cd ..
$ mkdir mytmp
$ cd mytmp
$ vim myexcel.c
$ cat myexcel.c
#include "xlsxwriter.h"

int 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);

return workbook_close(workbook);
}

# Compile and run the application:
$ cc myexcel.c -o myexcel -lxlsxwriter -lz
$ ./myexcel.exe

$ ls -ltr
total 1077
-rw-r--r-- 1 jmcnamara Domain Users 313 Apr 6 19:02 myexcel.c
-rwxr-xr-x 1 jmcnamara Domain Users 1093488 Apr 6 19:03 myexcel.exe
-rw-r--r-- 1 jmcnamara Domain Users 5254 Apr 6 19:03 myexcel.xlsx

您看到的问题是由于未找到 header /库造成的,因此请仔细检查您的安装阶段。

此外,这与您链接到的其他问题不是同一个问题。在他们的例子中,他们有一个混合的 32 位和 64 位库,导致了链接问题。顺便说一句,我是 libxlsxwriter 的作者。

关于c - Windows 上 C 语言的 xlsxwriter 安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43238767/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com