libcairo-2.dll отсутствует во время выполнения на MSYS2

Вот простой тест, чтобы начать писать код, использующий Cairo на MSYS2:

#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 build завершается успешно, но запуск полученного исполняемого файла приводит к этой ошибке:

C:/msys64/path/to/c.exe: error while loading shared libraries: libcairo-2.dll: cannot open shared object file: No such file or directory

Я пытался найти libcairo-2.dll внутри MSYS2, но ничего не вижу. Поиск в Google не приближает меня.

Я подозреваю, что это часть процесса обучения разработке MSYS2; что мне не хватает?


person Jacob Marble    schedule 24.11.2015    source источник
comment
Почему -lcairo? pkg-config уже дает вам это.   -  person Ray Donnelly    schedule 25.11.2015


Ответы (1)


Есть ли у вас /mingw64/bin в переменной среды PATH при запуске скомпилированного исполняемого файла?

libcairo-2.dll (и множество других файлов .dll) находится в /mingw64/bin.

Это уже решено в оболочке MinGW, которая отличается от оболочки MSYS2. Оба есть в стартовом меню.

person Ray Donnelly    schedule 24.11.2015
comment
Я должен был быть более точным: когда вы пытались запустить свой динамически связанный образец cairo, ваша переменная среды PATH включала / mingw64 / bin? - person Ray Donnelly; 25.11.2015
comment
Как в: PATH = / mingw64 / bin: $ PATH ./c.exe - person Ray Donnelly; 25.11.2015
comment
Да, я понял это из вашего ответа. Это именно то, чего мне не хватало. Спасибо, Рэй. - person Jacob Marble; 25.11.2015
comment
Другой вариант - использовать mingw64_shell.bat. Таким образом, среда будет правильно настроена для ваших нужд. Наша Wiki на SourceForge - полезный ресурс. Ваше здоровье! - person Ray Donnelly; 26.11.2015
comment
Рэй, я понял это вчера в конце рабочего дня, ударившись головой об отдельную проблему. Мне пришлось отменить пару вещей в моем .bashrc, и теперь многие вещи имеют больше смысла. Спасибо за отличную работу. - person Jacob Marble; 26.11.2015