Есть библиотека, которая компилируется под разные версии 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")
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Почему логика языка С++ позволяет производному классу пользоваться конструктором БЕЗ параметров базового класса, НО НЕ позволяет пользоваться...
ЗдравствуйтеПрошарил весь гугл, но так и не понял даже в какую сторону идти
Делаю конвертер из римских цифр в десятичные и вот который час танцую с бубном перед ошибкой, но как то никак
Не находит столбец в таблице и выдаёт такую ошибку :