c - 使用 gcc,我无法获取第 3 方库 Cairo 来链接/编译

标签 c gcc compiler-errors linker-errors codeblocks

显示的错误是针对 undefined symbol ,而不是我从示例中复制的 Cairo 函数,但我猜是内部函数。我环顾四周并尝试使用 $(pkg-config --cflags --libs cairo),逐字来自使用终端的常见在线示例。

我在使用 EXPORT=(我的 cairos .ps 文件路径)后尝试过。

我目前在链接器设置中的 CodeBlocks“链接库”中有一个选项: /usr/lib/x86-linux-gnu/libcairo.a

另外,我有 /usr/include/cairo在我的编译器选项中。

错误:

/usr/lib/x86_64-linux-gnu/libcairo.a(cairo-image-source.o)||In function <code>_cairo_image_source_finish':| (.text+0x1c)||undefined reference to</code>pixman_image_unref'|

还有 50 个类似的。

由以下内容生成,main.c:

include cairo.h (with # and <>)

int main()
{

    cairo_surface_t *surface =
        cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 240, 80);
    cairo_t *cr =
        cairo_create (surface);

    cairo_select_font_face (cr, "serif", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
    cairo_set_font_size (cr, 32.0);
    cairo_set_source_rgb (cr, 0.0, 0.0, 1.0);
    cairo_move_to (cr, 10.0, 50.0);
    cairo_show_text (cr, "Hello, world");

    cairo_destroy (cr);
    cairo_surface_write_to_png (surface, "hello.png");
    cairo_surface_destroy (surface);

    return 0;
}

任何帮助修复和理解正在发生的事情将不胜感激。 谢谢。

最佳答案

所以这个问题的解决方案如下:

使用 pkg-config 来获取所有正确的包含内容。通过添加自动执行此操作:

pkg-config --cflags --libs cairo (波浪线键上用“`”包围。)

到编译器设置中的“其他选项”选项卡。

我对链接器“其他选项”选项卡执行了相同的操作:

pkg-config --libs cairo (也被“`”包围,重音符号)

现在我构建并编译没有错误,但是当我运行它时,除了一个空的控制台窗口之外什么也看不到:/

关于c - 使用 gcc,我无法获取第 3 方库 Cairo 来链接/编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35743948/

相关文章:

c++ - 使用 clang 内置函数与标准函数的好处

c++ - 无法理解 __attribute__ 标签

c++ - 如何比较两个 std::istream 引用?

c++ - 为什么 'undefined behaviour'存在?

c - 如何在Windows中使用 "make"?明格威32

c++ - 交换指针

c - C中的进度字符串解析

包含 math.h 和链接 libm 时的 C sinhl undefined reference

c++ - 如何访问指针 vector 数组中的前向列表,这些 vector 指向指针 vector 以转发对象的指针列表?

types - 为什么ReasonML抛出此类型错误?