Кто-нибудь может объяснить, как работает компиляция?
Я не могу понять, как работает компиляция.
Чтобы быть более конкретным, вот пример. Я пытаюсь написать код в MSVC++ 6 для загрузки состояния Lua.
Я уже:
- установить дополнительные каталоги для библиотеки и включить файлы в нужные каталоги
- использовал extern C (потому что Lua - это только C или я так слышал)
включил правильные заголовочные файлы
Но я все еще получаю некоторые ошибки в MSVC++6 о неразрешенных внешних символах (для функций Lua, которые я использовал).
Как бы я ни хотел знать, как решить эту проблему и двигаться дальше, я думаю, что для меня было бы намного лучше, если бы я понял лежащие в ее основе процессы, так что может ли кто-нибудь написать хорошее объяснение этому? Что я хочу знать, так это процесс. Это может выглядеть так:
Шаг 1:
- Вход: Исходный код(ы)
- Процесс: анализ (можно добавить здесь больше деталей)
- Вывод: все, что выводится здесь..
Шаг 2:
- Входные данные: независимо от того, что было получено на шаге 1, плюс, возможно, что-то еще нужно (библиотеки? DLL? .so? .lib? )
- Процесс: все, что делается с вводом
- Вывод: все, что выводится
и так далее..
Спасибо..
Может быть, это объяснит, что такое символы, что такое связывание, что такое объектный код или что-то еще.
Спасибо.. Извините, что такой нуб..
P.S. Это не обязательно должно быть привязано к конкретному языку.. Но не стесняйтесь выражать это на языке, который вам наиболее удобен.. :)
EDIT: так или иначе, мне удалось устранить ошибки, оказалось, что мне нужно вручную добавить файл .lib в проект; просто указание каталога библиотеки (где находится .lib) в настройках IDE или настройках проекта не работает.
Однако приведенные ниже ответы несколько помогли мне лучше понять процесс. Большое спасибо!.. Если кто-то все еще хочет написать подробное руководство, пожалуйста.. :)
РЕДАКТИРОВАТЬ: Просто для дополнительной справки я нашел две статьи одного автора (Майка Диля), которые довольно хорошо объясняют это.. :) Изучение процесса компиляции: часть 1 Изучение процесса компиляции: часть 2