在我的main.h文件中,我#include "skybox.h"
。在skybox.h中,包含了stb_image.h(GitHub的最新版本,截至29-1-2017)。与我遇到的任何其他库不同,在包含stb_image.h之前,文档对#define STB_IMAGE_IMPLEMENTATION
说。我在尝试包含stb_image.h(在skybox.h中)之前,在包含skybox.h(在main.h中),both和none之前都尝试过这个。它们都不起作用,链接器输出build / main.o和build / skybox.o之间的所有重复项。
ld:33个用于体系结构x86_64的重复符号
是链接时给出的错误。另外,我正在从头文件stb_image.h中执行#define,但是尝试从源文件中执行此操作,这没有帮助。
答案 0 :(得分:0)
我终于找到了解决方法。而是将#define STB_IMAGE_IMPLEMENTATION
和#inlclude stb_image.h
放在头文件中,无论它们在何处使用,都将它们放在源文件中。如果将#define STB_IMAGE_IMPLEMENTATION
放在标题中,则会在包含该标题的所有文件中定义它,导致重复符号错误,如同定义时一样,stb_image将重新实现。