Ошибка повторяющихся символов при включении файла, который включает stb_image.h

В моем файле 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), как, так и нет. Ни один из них не работает, компоновщик выводит все дубликаты между build / main.o и build / skybox.o.

ld: 33 повторяющихся символа для архитектуры x86_64

ошибка, указанная при связывании Кроме того, я делаю #define из заголовочного файла stb_image.h, но попытался сделать это из исходного файла, что не помогает.

0

Решение

Я наконец понял, как это исправить. Вместо того, чтобы положить #define STB_IMAGE_IMPLEMENTATION а также #inlclude stb_image.h в заголовочном файле вы помещаете их в исходный файл, где бы они ни использовались. Если вы положите #define STB_IMAGE_IMPLEMENTATION в заголовке он определяется во всех файлах, которые включают этот заголовок, вызывая ошибку повторяющихся символов, так как при определении stb_image переопределяется.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]