170 похожих чатов

Всем привет Подскажите, плиз, по поводу создания dll. С помощью Cmake

и add_library мы без особых проблем можем создать проект с dll, а так же исполнительный файл, который будет с этой dll работать. В то же время встречал файлы типа:
#ifdef(_SOME_DLL)
# define DLL_SPEC __declspec(dllexport)
#else
# ifdef(_SOME_APP)
# define DLL_SPEC __declspec(dllimport)
# else
# define DLL_SPEC
# endif
#endif
Насколько я успел разобраться, подобные файлы включаются в файлы библиотеки и те, которые эту библиотеку используют. Также в первом случае мы в заголовке прописываем #define _SOME_DLL, во втором #define _SOME_APP
Просьба поправить, если я где-то ошибся. Но у меня ещё вопрос. Зачем нужен такой файл, ведь "и так работает"))?
Я слышал о таблицах экспорта и импорта, но как-то пока не понял что к чему
UPD
Если кто-то знает, где об этом можно доступно прочитать, киньте в меня ссылкой, плиз, а то гугл меня скоро нафиг начнёт посылать

1 ответов

16 просмотров

#define используют чтобы избежать повторного включения заголовочных файлов. Все эти __declspec определяют какое имя функция будет иметь в конечной библиотеке, по какому имени к ней можно будет обращаться. А, ну и SOME_APP SOME_DLL помогут определить что нужно сделать - импортировать функции или экспортировать. Закос под универсальность что ль. Или вопрос не об этом был? Не бейте, знающие, если я ошибся. https://docs.microsoft.com/ru-ru/cpp/build/exporting-from-a-dll?view=vs-2019

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта