2

我正在尝试使用libxlsxwriter,但我似乎可以让事情正确编译或运行。

我遵循了 Windows 的使用说明Mingw-w64,并msys2在此处提供:http: //libxlsxwriter.github.io/getting_started.html

msys2从他们的网站安装并使用pacman -Syu. 然后我安装zlib了推荐的:

# Install the dev tools for libxlsxwriter.
pacman -S git gcc make zlib-devel

然后我运行代码来下载和编译libxlswriter

# Clone and build libxlsxwriter.
git clone https://github.com/jmcnamara/libxlsxwriter.git
cd libxlsxwriter/
make
make install
# run example
cd ..
cc myexcel.c -o myexcel -lxlsxwriter -lz

现在有一个名为的可执行文件myexcel,它应该创建一个基本的 excel 文档,但是当我双击它时,我得到了错误:

The program can't start because msys-2.0.dll is missing from your computer.

我也收到了丢失的错误msys-z.dll

我不确定我做错了什么或如何解决它。

任何帮助,将不胜感激

编辑:

如果我运行:

make examples
./examples/hello

hello world 示例成功运行,因此似乎安装正确。我想我只是不明白如何让它运行用户制作的 .c

4

1 回答 1

2

MSYS 控制台在打开控制台时定义了 MSYS 命令和 DLL 的路径:例如,如果 MSYS 安装在C:\msys64它本地添加路径,C:\msys64\usr\bin但它不会将它添加到 Windows 系统 PATH。

因此,如果您单击 MSYS 外部的可执行文件,它无法找到 DLL,因为它们不在 Windows PATH 中。

许多解决方案:

1)添加C:\msys64\usr\bin用户或计算机PATH(编辑环境变量)。作为奖励,您可以访问grepWindows CMD 中的命令。作为一个缺点,可能会与find或之类的命令发生混淆/冲突sort

或者

2)在您的可执行目录中创建一个myexcel.bat包含以下内容的文件:

@echo off
set PATH=C:\msys64\usr\bin;%PATH%
%~PD0\myexcel.exe

%~PD0 prefix允许从 .bat 路径中找到可执行文件,因此如果 .bat 文件从另一个目录运行,它仍然可以找到可执行文件)

3) 复制可执行文件所在的 MSYS DLL。由于 DLL 与 .exe 位于同一目录中,Windows 会找到它们。推荐用于独立发行版,而不是供个人使用,因为它会创建大量副本。

4) 针对 MSYS .a 库的静态链接。我不知道这是否适用于所有库。libz.a例如似乎找不到。

于 2016-07-19T17:09:21.550 回答