ПОЧВА не связывается правильно

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

1> ССЫЛКА: предупреждение LNK4098: defaultlib 'MSVCRT' конфликтует с использованием других библиотек; использовать /NODEFAULTLIB: библиотека
1>libSOIL.lib(stb_image_aug.o): ошибка LNK2019: неразрешенный внешний символ __alloca, на который ссылается функция _stbi_zlib_decode_noheader_buffer
1>libSOIL.lib(image_helper.o): ошибка LNK2019: неразрешенный внешний символ _sqrtf, на который есть ссылка в функции _RGBE_to_RGBdivA2

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

3 ответа

Решение

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

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

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

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

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

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

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

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

Другие вопросы по тегам