Каково различие между dllexport и dllimport?

@ECHO OFF
SETLOCAL
SET "targetdir=U:\destdir"
SET /a retain=10

FOR /f "skip=%retain%delims=" %%a IN (
 'dir /b /a-d /o-d "%targetdir%\*" '
 ) DO ECHO (DEL "%targetdir%\%%a"

GOTO :EOF

Вам нужно будет изменить настройку targetdir в соответствии с вашими обстоятельствами. Точно так же эта процедура предназначена для всех файлов - измените маску файла.

Необходимые команды DEL просто ECHO ed для целей тестирования. После того, как вы подтвердите правильность команд, измените ECHO(DEL на DEL, чтобы фактически удалить файлы.

метод состоит в том, чтобы просто выполнить dir в базовой форме без каталогов, отсортированных в обратном порядке -date order.

Пропустить первые 10 записей и удалить остальные.

53
задан Aardvark 24 October 2008 в 16:20
поделиться

4 ответа

  • __declspec(dllexport) говорит компоновщику, что Вы хотите, чтобы этот объект был сделан доступным для другого DLL для импорта. Это используется при создании DLL, с которым могут связаться другие.

  • __declspec(dllimport) импорт реализация от DLL, таким образом, Ваше приложение может использовать его.

я - только разработчик C/C++ новичка, поэтому возможно, у кого-то есть лучшее объяснение, чем я.

46
ответ дан Patrizio Bertoni 7 November 2019 в 18:23
поделиться

__declspec( dllexport ) - класс или функция, так отмеченная, будут экспортироваться из DLL, это встроено. Если Вы создадите DLL, и Вы хотите API, необходимо будет использовать это или отдельный.DEF файл, который определяет экспорт ( MSDN). Это удобно, потому что это сохраняет определение в одном месте, но.DEF файл предоставляет больше возможностей.

__declspec( dllimport ) - класс или функция, так отмеченная, будут импортированы из DLL. Это на самом деле не требуется - Вам нужна библиотека импорта так или иначе для создания компоновщика счастливым. Но, когда правильно отмечено с dllimport, у компилятора и компоновщика есть достаточно информации для оптимизации вызова; без него Вы получаете нормальное статическое подключение к интерфейсной функции в библиотеке импорта, которая добавляет ненужную косвенность. ONT1 ONT2

83
ответ дан Shog9 7 November 2019 в 18:23
поделиться

Dllexport используется для маркировки функции, как экспортируется. Вы реализуете функцию в своем DLL и экспортируете его так, это становится доступным любому использующему Ваш DLL.

Dllimport является противоположным: это отмечает функцию, как импортируемую из DLL. В этом случае Вы только объявляете подпись функции и связываете Ваш код с библиотекой.

8
ответ дан Antoine Aubry 7 November 2019 в 18:23
поделиться

Два различных варианта использования:

1) Вы определяете реализацию класса в dll. Вы хотите, чтобы другая программа использовала класс. Здесь Вы используете dllexport, поскольку Вы создаете класс, который Вы хотите, чтобы dll представил.

2) Вы используете функцию, обеспеченную dll. Вы включаете заголовок, предоставленный dll. Здесь заголовок использует dllimport для введения реализации, которая будет использоваться текущей программой.

Часто тот же заголовочный файл используется в обоих случаях и определенный макрос. Конфигурация сборки определяет макрос, чтобы быть импортом или экспортом, зависящим, в котором это нуждается.

9
ответ дан morechilli 7 November 2019 в 18:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: