Есть библиотека, которая компилируется под разные версии Visual C++ в разных режимах - динамическая, статическая, 64 и 32 разряда.
Имя самого файла имеет вид
lib@####$$
@ - в случае динамической библиотеки равно d (можно привязать к опции /MD),
иначе отсутствует
#### - версия компилятора, что в макросе _MSC_VER
$$ - 64, если макрос _WIN64 равен 1, иначе отсутствует
А теперь сам вопрос - я хочу написать конструкцию, которая бы сама включала нужную мне библиотеку. Я могу взять, например
#pragma comment(lib, "lib180064")
Но это для конкретного сочетания. Для произвольной библиотеки и вариантов компиляции можно расписать сложную ветвящуюся структуру из #if и #else, но хочется сделать проще, особенно с учетом того, что для новой версии и нового _MSC_VER опять ветвить придется.
Это можно как-то упростить? Собирать этот #pragma comment в зависимости от того, чем компилирую? Я никак сообразить не могу.
Т.к. #pragma comment(lib) принимает строку, можно её собрать в зависимости от условий:
#define STRING2(x) #x
#define STRING(x) STRING2(x)
#ifdef _WIN64
#define LIB_64 "64"
#else
#define LIB_64 ""
#endif
#ifdef _DLL
#define LIB_DLL "@"
#else
#define LIB_DLL ""
#endif
#pragma comment(lib, "lib" LIB_DLL STRING(_MSC_VER) LIB_64 ".lib")
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники