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