Два.c файла имеют идентичные настройки компиляции - VC ++ не сообщает ни о какой ошибке и не компилирует одного из них

Я пытаюсь скомпилировать ряд.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 ==========

Что происходит с компилятором и как я заставляю его передумать?

5
задан sharptooth 24 February 2010 в 14:44
поделиться

3 ответа

Компилятор может подумать, что объектный файл обновлен с исходным кодом. Является ли метка времени одного из объектных файлов в будущем?

2
ответ дан 15 December 2019 в 00:59
поделиться

Перейти к сборке | Меню конфигурации .

Включен ли проект для сборки в вашей текущей конфигурации?

Также проверьте следующее:

Щелкните правой кнопкой мыши файл .c (или .obj) и перейдите в свойства. В разделе "Конфигурация" Свойства -> Общие , убедитесь, что для Исключено из сборки установлено значение Нет

Также проверьте, возможно, вы собираете сборку через make-файл?

Вы также можете проверить метка времени второго файла .c.Возможно, это произойдет в будущем, и поэтому VC ++ не обнаруживает изменений и, следовательно, не требует повторной компиляции.

1
ответ дан 15 December 2019 в 00:59
поделиться

Если вы компилируете его как правый клик, а затем собираете проект, находит ли компоновщик функции и помещает ли их в библиотеку.

1
ответ дан 15 December 2019 в 00:59
поделиться