Visual C++ говорит: "LNK1104: невозможно открыть файл" stlport_statix.lib ""
При попытке связать мое решение C++ в Visual Studio 2008 я получаю сообщение "LNK1104: не удается открыть файл" stlport_statix.lib "".
Я установил STLport, и правильный путь указан в Tools->Options->Projects And Solutions->VC++ Directories->Library Files
, Однако STLport не предоставляет файл с именем stlport_statix.lib
, только stlport_static.lib
,
Откуда в Visual Studio появляется идея заменить окончание "c" на "x"?
Обратите внимание, что это может быть очень простой ошибкой, так как я не знаком со стеком Microsoft (исходя из фона Linux/gcc).
Редактировать: я выяснил, откуда взято "х", это означает "статическая библиотека STLport, построенная с динамическим RTL". Тот, кто создал STLPort, не создавал эту версию, поскольку мы не должны ее использовать.
Edit2: я сейчас пытаюсь выяснить, почему Visual Studio строится с /MD
даже если проект настроен на использование /MT
в разделе "Генерация кода". Это, кажется, корень проблемы.
1 ответ
Задача решена. У меня был проект в решении с использованием /MD
вместо /MT
, что я упустил.
Длинное объяснение: STLport может быть построен либо для динамического связывания, либо для статического связывания. Он также может быть построен для статического связывания, но с динамически связанной библиотекой времени выполнения. В результате получается библиотека с именем "stlport_statix.lib", тогда как обычная статически связанная библиотека называется "stlport_static.lib".
Когда вы строите с STLport, _auto_link.h
решает, какую версию ссылаться, в зависимости от того, используете ли вы /MD
или же /MT
,
Подробнее см. _auto_link.h
строки 27-39 и _detect_dll_or_lib.h
строки 32-65 (при условии STLport 5.2.1).