使用gcc,我无法获得第三方库,Cairo,链接/编译
显示的错误是未定义的符号,而不是我从示例中复制的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
_cairo_image_source_finish':| (.text+0x1c)||undefined reference to
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
(也被“`”包围,重音坟墓)
现在我构建并编译没有错误,但是当我运行它时,我看不到任何东西,只有一个空的控制台窗口:/
当您使用png表面时,还需要在pkconfig行中包含“cairo-png”。 尝试
$(pkg-config –cflags –libs cairo cairo-png)
有关cairo相关pkg-config选项的完整列表,请查看/ usr / lib / pkgconfig。
祝好运。
阿尔文
它显然意味着链接器无法找到链接所需的所有引用。 具体来说,您的cairo库函数依赖于pixman_image_unref
,该函数位于不同的库中,并且链接器无法找到此库。 您需要包含pixman库或pixman_image_unref
可用的任何其他库。
只需使用-lpixman-1。 在结尾处给出-L / _path_to_lib / add -lpixman-1即
-L/_path_to_lib/ -lpixman-1
我有同样的问题,我解决了它没有pkg-config,只是链接到/ usr / lib下的libcairo.so。
g++ -L/usr/lib -lcairo hello.o -o hello
我第一次尝试使用eclipse luna但没有工作,所以我使用自定义makefile从终端运行它:
CC=g++ CFLAGS=-c -Wall -I/usr/include/cairo LDFLAGS=-L/usr/lib -lcairo SOURCES=hello.c OBJECTS=$(SOURCES:.c=.o) EXECUTABLE=hello all: $(SOURCES) $(EXECUTABLE) $(EXECUTABLE): $(OBJECTS) $(CC) $(LDFLAGS) $(OBJECTS) -o $@ .co: $(CC) $(CFLAGS) $< -o $@
希望它有所帮助。
干杯