2015-11-24 4 views
2

Вот простой тест, чтобы начать писать код, который использует Каир на MSYS2:libcairo-2.dll отсутствует во время выполнения на 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 команда сборка прошла успешно, но работает получившийся исполняемый файл результатов в этой ошибки:

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; что мне не хватает?

+0

Почему '-lcairo'? pkg-config дает вам это уже. –

ответ

4

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

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

Это уже разрешено в оболочке MinGW, которая не то же самое как оболочка MSYS2. Оба находятся в меню «Пуск».

+0

Я должен был быть более явным: когда вы пытались запустить свой динамически связанный образец cairo, ваша переменная среды PATH включала/mingw64/bin? –

+0

Как в: PATH =/mingw64/bin: $ PATH ./c.exe –

+0

Да, я понял это из вашего контента для ответа. Это именно то, чего мне не хватало. Спасибо, Рэй. –

 Смежные вопросы

  • Нет связанных вопросов^_^