SOIL неправильно связывается

Я связываю SOIL в своей библиотеке, но при компиляции получаю следующие ошибки компоновщика:

1>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
1>libSOIL.lib(stb_image_aug.o) : error LNK2019: unresolved external symbol __alloca referenced in function _stbi_zlib_decode_noheader_buffer
1>libSOIL.lib(image_helper.o) : error LNK2019: unresolved external symbol _sqrtf referenced in function _RGBE_to_RGBdivA2

Я связал libSOIL.lib в дополнительных зависимостях.


person Bumrang    schedule 09.03.2012    source источник


Ответы (3)


Неразрешенные ошибки символов, ошибка LNK2019, происходят из символов в libgcc.lib или другой реализации стандартной библиотеки (см. здесь для параметров Microsoft), на который не установлена ​​ссылка. alloca и sqrtf являются стандартными библиотечными функциями.

Если вы не подключаетесь к стандартной библиотеке, создайте ссылку на нее, добавив ее в путь к вашей библиотеке компоновщика.

Из приведенного выше предупреждения LNK4098, более вероятно, что вы подключаетесь к стандартной библиотеке, но компоновщик не знает, какую из них загрузить.

Порекомендуйте аргументы LINKER для решения этой проблемы (скажите компоновщику выбрать конкретную стандартную библиотеку): / NODEFAULTLIB: "MSVCRT" / NODEFAULTLIB: "LIBCMT.

См. Следующие ссылки для получения дополнительной информации и ресурсов.

person Appleman1234    schedule 09.03.2012
comment
Хм, добавление / NODEFAULTLIB: MSVCRT исправило предупреждение, но те же ошибки остались. - person Bumrang; 09.03.2012

Исправлена ​​ошибка.

Хотя я использую VC2010, я создал библиотеки VC8. Затем я добавил SOIL.lib вместо libSOIL.lib. Ошибки ушли.

person Bumrang    schedule 10.03.2012
comment
Я использовал VC2012 (называемый VC11), и создание решения VC9 тоже работало. - person psycho brm; 21.06.2013
comment
Я использовал VC2013, и построение решения VC8 работало - person PALEN; 06.01.2015

У меня была такая же проблема (используя Visual Studio 2013 с набором инструментов vc120), я решил ее, загрузив библиотеку SOIL с официального сайта, и вместо переименования libSOIL.a в SOIL.lib я запустил решение VC8 внутри официального zip (что создает SOIL.lib) «Потом скопировал в свой проект, и проблемы исчезли.

person Joel García Verástica    schedule 25.04.2014
comment
У меня это тоже сработало. VC8 вместо VC9 для VS 2013 - person PALEN; 06.01.2015