Для создания библиотеки, которая будет ссылаться независимо от выбора времени выполнения, необходимо использовать два параметра:
/ MT для сборки в сравнении с базовой версией выпуска, / Zl , чтобы опустить имена библиотек по умолчанию.
Сборка с использованием времени выполнения dll приведет к тому, что компилятор украсит все символы времени выполнения с помощью __imp_
(поэтому, например, он попытается связать __imp__fread
вместо _fread
). Поэтому вы должны выбрать одну из статических сред выполнения.
Компилятор делает неявную прагму библиотеки по умолчанию, в зависимости от выбранной библиотеки:
#pragma comment(lib,"libcmtd.lib")
так выглядит в коде. / Zl заставляет компилятор опустить все эти директивы - (неявные и явные) из результирующего файла .obj (и, следовательно, .lib). Таким образом, результат должен связываться чисто, не вызывая конфликтов библиотеки по умолчанию.