При сборке программы, использующей OpenGL + GLEW + GLFW3, возникает предупреждение 1>LINK : warning LNK4098: библиотека по умолчанию "MSVCRT" конфликтует с использованием других библиотек; используйте /NODEFAULTLIB:library
. Это как в debug, так и в release.
Не совсем понимаю, какие именно библиотеки ему не нравятся?
GLEW + GLFW3 откуда?
Желательно чтобы все библиотеки и программа были скомпилированы с одинаковой версией библиотек студии: версия студии + в настройках проекта где-то список с /MT, /MD и т.д.
https://stackoverflow.com/a/3007915/964478
C++ binary compatibility 2015-2019 | Microsoft Docs
Precompiled build`ы с официальных сайтов.
Я пробовал компилировать исходники, но там генерируется только dll-файл. Как сделать lib-файл я не понял.
Note
The run-time libraries now contain directives to prevent mixing different types. You will receive this warning if you try to use different types or debug and non-debug versions of the run-time library in the same program. For example, if you compiled one file to use one kind of run-time library and another file to use another kind (for example, debug versus retail) and tried to link them, you will get this warning. You should compile all source files to use the same run-time library. For more information, see the /MD, /MT, /LD (Use Run-Time Library) compiler options.
Источник: Linker Tools Warning LNK4098
Если статических либ нет, прикрутить только динамические. И важно не путать отладочные библиотеки с релизными /MD, /MT, /LD (Use Run-Time Library)
но их же надо сначала как-то скомпилить.
А я подумал что у ТС Мэйк не собирает статику, а собирает только динамику. И он соответстенно не может либы подключить.
Видимо не то понял.
на выходе всё-равно получается dll
Повторная сборка начата…
1>------ Перестроение всех файлов начато: проект: ZERO_CHECK, Конфигурация: Debug Win32 ------
1>Checking Build System
2>------ Перестроение всех файлов начато: проект: glew, Конфигурация: Debug Win32 ------
2>Building Custom Rule H:/Projects/src/glew-2.1.0/build/cmake/CMakeLists.txt
2>glew.c
2>glew.vcxproj -> H:\Projects\src\glew-2.1.0\bin\Debug\glew32s.dll
========== Перестроение всех проектов: успешно: 2, с ошибками: 0, пропущено: 0 ==========
хм, а собираете как? Если открыть проект студии, то по идее не должно быть этого.
glew/build/vc15 at master · nigels-com/glew · GitHub
Ну и для статической видимо проект с соотв. названием.
в студии.
А в cmake вообще ничего не происходит, или я что-то не так делаю.
1>------ Rebuild All started: Project: glew_static, Configuration: Release Win32 ------
2>------ Rebuild All started: Project: glew_shared, Configuration: Release Win32 ------
2>glew.c
1>glew.c
2> Creating library ..\..\lib\Release\Win32\glew32.lib and object ..\..\lib\Release\Win32\glew32.exp
1>glew_static.vcxproj -> C:\Users\user\Downloads\glew-2.2.0\build\vc14\..\..\lib\Release\Win32\glew32s.lib
3>------ Rebuild All started: Project: glewinfo, Configuration: Release Win32 ------
4>------ Rebuild All started: Project: visualinfo, Configuration: Release Win32 ------
3>glewinfo.c
4>visualinfo.c
2>glew_shared.vcxproj -> C:\Users\user\Downloads\glew-2.2.0\build\vc14\..\..\bin\Release\Win32\glew32.dll
4>visualinfo.vcxproj -> C:\Users\user\Downloads\glew-2.2.0\build\vc14\..\..\bin\Release\Win32\visualinfo.exe
3>glewinfo.vcxproj -> C:\Users\user\Downloads\glew-2.2.0\build\vc14\..\..\bin\Release\Win32\glewinfo.exe
========== Rebuild All: 4 succeeded, 0 failed, 0 skipped ==========
Во! Эта версия компилируется без ошибок. И солюшен тут какой-то другой. Я качал версию 2.1.0 с сурсфорджа.
Но работоспособность еще не проверял.
А тут что ставить?
тут просто выбор версии компилятора и сдк винды.
Это на что-нибудь повлияет? Или надо той же версией, что и мой проект?
Так у вас скорее всего одна версия и есть если стоит только одна студия )
Так что и получится
Я еще вот что не пойму. Получается, что для дебага и релиза одну и ту же либу надо подключать? Просто смотреть, чтобы её /MT /MD совпадало с моим проектом?
Наверно лучше разные.
/MT /MD не будет совпадать, для дебага /MTd /MDd
Релизные и отладочные отдельно собираются, они не одинаковы.
Загрузил в CMake сырцы zip из The OpenGL Extension Wrangler Library, там кстати и собранный релиз под внду есть.
Указал версию студи, архитектуру системы, сконфигурил проект для студии.
Открыл в студии все норм собралось, и либы и длл.
P. S.
Правда студия при сборке uninstall почему-то пропустила, а так все норм.
Так, а получается, что dll’ки тоже делятся на /MT /MD /MTd /MDd? Для каждого режима своя dll’ка нужна?
Верно, своя dll и свои lib. В студии перед сборкой указывается что собрать, релиз или дебаг.