- Что такое функция экспорта?
Когда вы программируете модули (фрагменты кода), вам нужно вызвать в некотором модуле функцию, определенную в каком-либо другом модуле. Экспорт относится к этому процессу. В C/C++, если вы хотите объявить функцию, чтобы использовать ее, не определяя ее в исходном файле, вы должны использовать ключевое слово «extern». В файле, где определена эта функция, вам нечего делать, по умолчанию объекты в глобальной области автоматически экспортируются.
- Есть ли разница между нормальной функцией и нормальной (вы подразумеваете экспортируемой) функцией? если да, то что это?
Ничего особенного, за исключением того, что позднее видны во время связи.
- как это связано с dll?
См., http://msdn.microsoft.com/en-us/library/a90k134d.aspx для экспорта DLL и функций для DLL. В таком случае вы должны объявить, какая функция должна быть экспортирована.
Функция, «экспортированная», будет скомпилирована либо как динамическая библиотека, либо как статическая библиотека. Затем эта библиотека будет связана, и ее заголовки включаются в исходный код, который клиент хочет повторно использовать. В Windows вам придется настроить параметры проекта, чтобы создать файл .dll, а не файл .exe. Нет никакой реальной разницы между нормальной функцией и экспортируемой функцией; однако на C++ вы можете обнаружить, что экспортируемая функция содержится в пространстве имен, не говоря уже о том, что инкапсулируется классом. Файл .dll просто содержит всю эту информацию, а не exec. но библиотека. – Poriferous