Libpng |结构的重复符号

libpng | duplicate symbol for architecture

本文关键字:符号 结构 Libpng      更新时间:2023-10-16

我正在尝试在Mac OS X Yosemite上使用libpng编译一个项目。

我得到了错误:

Undefined symbols for architecture x86_64:
  "_png_create_info_struct", referenced from:
      _writePNG in qrenc.o
  "_png_create_write_struct", referenced from:
      _writePNG in qrenc.o
  "_png_destroy_write_struct", referenced from:
      _writePNG in qrenc.o
  "_png_init_io", referenced from:
      _writePNG in qrenc.o
  "_png_set_IHDR", referenced from:
      _writePNG in qrenc.o
  "_png_set_PLTE", referenced from:
      _writePNG in qrenc.o
  "_png_set_longjmp_fn", referenced from:
      _writePNG in qrenc.o
  "_png_set_pHYs", referenced from:
      _writePNG in qrenc.o
  "_png_set_tRNS", referenced from:
      _writePNG in qrenc.o
  "_png_write_end", referenced from:
      _writePNG in qrenc.o
  "_png_write_info", referenced from:
      _writePNG in qrenc.o
  "_png_write_row", referenced from:
      _writePNG in qrenc.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

所以我在我的旧调用中添加了-lpng。现在它抛出

duplicate symbol _main in:
    .obj/main.o
    .obj/qrenc.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

与自制安装的libpng链接时出现相同错误。

我做错了什么?

有两个main函数文件(可能是main.c和qrenc.c)。从这些文件中删除该函数并使用-lpng.