libcairo-2.dll 在 MSYS2 上运行时丢失
libcairo-2.dll missing at runtime on MSYS2
下面是开始编写在 MSYS2 上使用 Cairo 的代码的简单测试:
#include <cairo.h>
int main() {
cairo_surface_t *surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 300, 300);
cairo_t *cr = cairo_create(surface);
cairo_set_line_width(cr, 10.0);
cairo_set_source_rgb(cr, 0, 0, 0);
cairo_move_to(cr, 10.0, 10.0);
cairo_line_to(cr, 100.0, 100.0);
cairo_stroke(cr);
cairo_destroy(cr);
cairo_surface_write_to_png(surface, "c.png");
cairo_surface_destroy(surface);
return 0;
}
此代码使用以下命令在 Darwin/MacPorts 上正确构建和执行:
$ gcc c.c -o c `pkg-config cairo --libs --cflags`
在Win8/MSYS2下,我安装了mingw-w64-x86_64-cairo
包。相同的 gcc
构建命令成功,但 运行 生成的可执行文件导致此错误:
C:/msys64/path/to/c.exe: error while loading shared libraries: libcairo-2.dll: cannot open shared object file: No such file or directory
我试图在 MSYS2 中找到 libcairo-2.dll
,但我没有看到任何东西。 Google 搜索并没有让我更接近。
我怀疑这是MSYS2开发学习曲线的一部分;我错过了什么?
当 运行 已编译的可执行文件时,您的 PATH
环境变量中是否有 /mingw64/bin
?
libcairo-2.dll
(以及许多其他 .dll 文件)位于 /mingw64/bin
.
这已在 MinGW shell 中解决,与 MSYS2 shell不同。两者都在开始菜单中。
下面是开始编写在 MSYS2 上使用 Cairo 的代码的简单测试:
#include <cairo.h>
int main() {
cairo_surface_t *surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 300, 300);
cairo_t *cr = cairo_create(surface);
cairo_set_line_width(cr, 10.0);
cairo_set_source_rgb(cr, 0, 0, 0);
cairo_move_to(cr, 10.0, 10.0);
cairo_line_to(cr, 100.0, 100.0);
cairo_stroke(cr);
cairo_destroy(cr);
cairo_surface_write_to_png(surface, "c.png");
cairo_surface_destroy(surface);
return 0;
}
此代码使用以下命令在 Darwin/MacPorts 上正确构建和执行:
$ gcc c.c -o c `pkg-config cairo --libs --cflags`
在Win8/MSYS2下,我安装了mingw-w64-x86_64-cairo
包。相同的 gcc
构建命令成功,但 运行 生成的可执行文件导致此错误:
C:/msys64/path/to/c.exe: error while loading shared libraries: libcairo-2.dll: cannot open shared object file: No such file or directory
我试图在 MSYS2 中找到 libcairo-2.dll
,但我没有看到任何东西。 Google 搜索并没有让我更接近。
我怀疑这是MSYS2开发学习曲线的一部分;我错过了什么?
当 运行 已编译的可执行文件时,您的 PATH
环境变量中是否有 /mingw64/bin
?
libcairo-2.dll
(以及许多其他 .dll 文件)位于 /mingw64/bin
.
这已在 MinGW shell 中解决,与 MSYS2 shell不同。两者都在开始菜单中。