根据README file at the Github repository for LodePNG:
程序只需要两个文件就可以读写PNG文件:lodepng.cpp和lodepng.h。项目中的其他文件只是示例、单元测试等。。。
我将lodepng.h
、lodepng.cpp
和example_encode.c
保存到我的工作文件夹中,按照指示将lodepng.cpp
重命名为lodepng.c
,并尝试运行example_encode.c
。我遇到了许多错误:
C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.text+0x30): undefined reference to `lodepng_encode32_file'
C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.text+0x43): undefined reference to `lodepng_error_text'
C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.text+0x98): undefined reference to `lodepng_encode32'
C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.text+0xb5): undefined reference to `lodepng_save_file'
C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.text+0xc5): undefined reference to `lodepng_error_text'
C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.text+0x127): undefined reference to `lodepng_state_init'
C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.text+0x15e): undefined reference to `lodepng_encode'
C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.text+0x18a): undefined reference to `lodepng_save_file'
C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.text+0x1a0): undefined reference to `lodepng_error_text'
C:\Users\Peter\AppData\Local\Temp\ccqdyxic.o:example_encode.c:(.text+0x1c6): undefined reference to `lodepng_state_cleanup'
所有的错误都是引用
lodepng.h
中已经定义的函数,该函数是使用Github链接中给定的#include "lodepng.h"
文件顶部的example_encode.c
引用的,所以我无法理解它为什么会有这个问题。还有人经历过这个问题吗?
最佳答案
听起来您需要将lodepeng.c与示例程序链接起来,如下所示:
$ gcc -o example_encode lodepng.c example_encode.c