Определение подходящего метода экспорта
Можно экспортировать функции в 2 или файла способов - DEF или ключевое слово __declspec(dllexport).Чтобы помочь решить, лучшим способом для библиотеки DLL, рассмотрите следующие вопросы:
Планируется экспортировать дополнительные функции далее?
Библиотека DLL используется только для тех приложений, которые можно перестроить, или он используется приложениями, которые невозможно перестроение- для примера, приложениями, созданные сторонними разработчиками?
Преимущества и недостатки использования файла DEF
Экспортировать функции в def-файле предоставляет элемент управления с порядковыми номерами экспорта.При добавлении экспортированную функцию в DLL, можно присвоить ему более высокое порядковое значение, чем любая другая экспортированную функцию.После этого приложения, использующие неявного соединения не следует выполнить повторную компоновку с библиотекой импорта, содержащей новую функцию.Это очень удобно при разработке библиотек DLL для использования во многих приложениях, поскольку можно добавить новую функцию, а также убедитесь, что она продолжит работать с приложениями, которые уже основаны на него.Например, библиотека DLL MFC создаются с использованием файла DEF.
Другим преимуществом использования def-файла, можно использовать атрибут NONAME экспортировать функцию.Это размещение только порядковый номер в таблицу экспортов в библиотеке DLL.Для библиотеки DLL, которые имеют большое количество экспортированных функций, с помощью атрибута NONAME может уменьшить размер файла DLL.Сведения о способах написания выписка определения модуля см. в разделе Правила для операторов определения модуля.Дополнительные сведения о порядковом экспорте см. в разделе Экспорт функций из библиотеки DLL по порядковому номеру, а не по имени.
Недостатки использования def-файла, что при экспортировании функций в файле A.C, C-++, необходимо поместить в def-файл декорированные имена или определить экспортированные функции с помощью модификатор extern "C", чтобы избежать оформления имени, выполняется компилятором Visual C-++ C.
При помещении в def-файл декорированные имена можно получить их с помощью DUMPBIN или с помощью параметра компоновщика /MAP.Декорированные имена, которые создаются компилятором компилятором с; поэтому, если разместить декорированные имена, которые создаются компилятором в данный файл, приложения, относящихся к DLL должны быть созданы с помощью той же версии компилятора, что декорированные имена совпадению вызывающего приложения экспортированные имена в def-файле библиотеки DLL.
Преимущества и недостатки использования __declspec(dllexport)
Использование __declspec(dllexport) удобно, поскольку можно не беспокоиться о поддержании def-файла и получать внутренние имена экспортированных функций.Однако польза этого способа экспортировать ограничена числом связанных приложений, которые можно легко.При повторном построении библиотеки DLL с новыми, понадобится также перестроить приложения, поскольку декорированные имена экспортированных функций C C-++ может измениться, если используется другая версия компилятора для перестроения его.
Выполняемые задачи
Экспорт из библиотеки DLL с использованием __declspec(dllexport)
Экспорт функций C++ для использования в исполняемых файлах, исходный код которых написан на языке C