Я пытаюсь скомпилировать ряд.c файлы из проекта с открытым исходным кодом в статическую библиотеку. Я создал VC ++ 9 файлов проекта, настроил все, как обычно. Я добавляю два.c файла в проект. У них нет специальных настроек компиляции - все настройки установлены на уровне проекта и установлены принять значение по умолчанию за исключением того, что я выключил предварительно скомпилированные заголовки.
Я нажимаю "Build project" - VC ++ говорит "Сделанный", два .obj файла и .lib файл создаются, но функции из одного из.c файлов не присутствуют в получающемся .lib файле.
Если я добавляю #error
в самом начале одного из этих двух файлов VC ++ останавливает компиляцию и отчеты. Но если я делаю то же с другим файлом, оно просто тихо компилирует и не сообщает об ошибке, таким образом, оно, очевидно, не компилирует файл, и вот почему функции не добираются до .lib файла.
Теперь я предполагаю это, если я добавляю некоторый текст (как #error
) как первая строка.c файла компилятор видел бы его независимо от любых настроек препроцессора, параметров компилятора, и т.д. Все же у меня есть файл log.c
:
#error
whatever text follows
и отчеты о Visual C++:
1>------ Build started: Project: MyProject, Configuration: Debug Win32 ------
1>Compiling...
1>log.c
1>Build log was saved at "file://whatever\Debug\BuildLog.htm"
1>MyProject - 0 error(s), 0 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
Что происходит с компилятором и как я заставляю его передумать?
Компилятор может подумать, что объектный файл обновлен с исходным кодом. Является ли метка времени одного из объектных файлов в будущем?
Перейти к сборке | Меню конфигурации
.
Включен ли проект для сборки в вашей текущей конфигурации?
Также проверьте следующее:
Щелкните правой кнопкой мыши файл .c (или .obj) и перейдите в свойства.
В разделе "Конфигурация" Свойства -> Общие
, убедитесь, что для Исключено из сборки
установлено значение Нет
Также проверьте, возможно, вы собираете сборку через make-файл?
Вы также можете проверить метка времени второго файла .c.Возможно, это произойдет в будущем, и поэтому VC ++ не обнаруживает изменений и, следовательно, не требует повторной компиляции.
Если вы компилируете его как правый клик, а затем собираете проект, находит ли компоновщик функции и помещает ли их в библиотеку.