Я пытаюсь скомпилировать набор файлов .c из проекта с открытым исходным кодом в статическую библиотеку. Я создал файл проекта VC ++ 9, настроил все как обычно. Я добавляю два .c файла в проект. У них нет специальных настроек компиляции - все настройки установлены на уровне проекта и установлены по умолчанию, за исключением того, что я отключил предварительно скомпилированные заголовки.
Я нажимаю «Построить проект» - 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 ==========
Что происходит с компилятором и как мне заставить его передумать?