Форум программистов, компьютерный форум CyberForum.ru

Создание *.dll: для чего нужен компилятору параметр -DBUILD_DLL? (использую MinGW) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с файлом типа fstream http://www.cyberforum.ru/cpp-beginners/thread1091503.html
Пишем несложный код: fstream file("Test.txt",ios_base::in|ios_base::app); int cnt = 0; while (cnt < 3) { cerr << char(file.get()); cnt++; }
C++ Эмулятор. На С, С++ Здравствуйте уважаемые читатели форума! У меня такой вопрос: (СРАЗУ ПРЕДУПРЕЖДАЮ Я НЕ ОЧЕНЬ ХОРОШО РАЗБИРАЮСЬ ПОКА В ЭТОМ ТАК ЧТО ОЧЕНЬ МНОГОЕ ИЗ МОИХ СЛОВ МОЖЕТ БЫТЬ ЖУТКИМ ....) В качестве зачетного задания преподаватель задал написать эмулятор процессора, (ну вначале придумать архитектуру, и написать эмулятор этого). Шаблон он дал, там был примитивный ассемблер, написанный на перле. И на С... http://www.cyberforum.ru/cpp-beginners/thread1091494.html
C++ Использование стороннего CSP. Шифрование в программе
Снова обращаюсь к гуру программирования. Возникла ещё одна проблема, причём уже давно. Некоторые пользователи жалуются на невозможность использования программы по причине НЕсохранения их данных в форме ввода. Хотя автосохранение стоит. На данный момент в программе используется виндовый CryptAcquireContext для шифрования введённых данных (логин и пароль для доступа к персональному кабинету...
Я создаю утечки памяти ! C++
Нет, я не хочу похвастаться этим. Я любитель использовать быстрые решение для того чтобы реализовать алгоритм или проверить "чтобы работало", но как известно нет ничего более вечного, чем временное... ... время идет, а код остается :wall: Образец:HTEXTURE tex; tex = hge->Load_Texture("texture.png"); hgeSprite* sprite = new hgeSprite(tex,0,0,50,50); sprite->Render(); //Play delete sprite;...
C++ Каким образом идет поиск слов в кавычках? http://www.cyberforum.ru/cpp-beginners/thread1091483.html
Доброго времени суток! Вот вся программа #include <fstream> #include <iostream> #include <string> int main() { std::ofstream ofs("test.txt");
C++ Умножить матрицу 10х10 на вектор из 10 элементов дана матрица:10*10.умножить ее на вектор 10.помогите пожалуйста...очень нужно подробнее

Показать сообщение отдельно
DrOffset
7089 / 4230 / 950
Регистрация: 30.01.2014
Сообщений: 7,006
18.02.2014, 20:42
Цитата Сообщение от kravam Посмотреть сообщение
А, ну вот, теперь вроде всё понятно. Оказывается, хидер работает на два фронта. Разработчик dll написал её и дал пользователю вместе с хидером и *.a. Пользователь, не думая о прототипах функций, подключает хидер и, не определяя BUILD_DLL вызывает функции (f()) и те оказываются import. Всё круто. Очень удобно для пользователя.
Наконец-то Все-таки все тоже самое, что в последнем сообщении было написано в первом.
Вот смотри, я выделю все ключевые слова:
Цитата Сообщение от Nick Alte Посмотреть сообщение
Потому что ленивые программисты используют один и тот же заголовок и для построения самой DLL, где содержащиеся в ней функции описаны как экспортируемые (со спецификатором __declspec(dllexport) в случае Visual Studio), и для использующих ту DLL программ, где их описывают уже как импортируемые, с модификатором __declspec(dllimport). Переключение как раз осуществляется проверкой макроса BUILD_DLL. Менять исходный код, добавляя-убирая этот макрос в зависимости от того, что мы собираем, неудобно. А удобно привязывать этот макрос к проекту, добавляя его в параметры компилятора, а лучше в свойства проекта в IDE, откуда он всё равно попадёт в командную строку.
Разве нет?

Цитата Сообщение от kravam Посмотреть сообщение
Небольшая тык скыть, догадка- получается, если мы имеем скомпилированные таким образом экзешники (к примеру, я пользуюсь билиотекой X.dll, невесть где взятой, и с её помощью что-то пишу), то если вдруг я заимею другую X.dll, то экзешники надо будет перекомпилировать, ибо, вызыванные в них функции вызываются по жёстко прописанным адресам, т. к.
C++
1
#define DLL_API __declspec(dllimport)
Не так. Таблица импорта заполняется фактическими адресами при старте программы. При компиляции она только создается и заполняется "ссылками" на импортируемые функции. А вот таблица экспорта фиксирована.
Вот тут все очень подробно.
Рекомендую еще раз прочитать ссылку на мсдн. Для полноты картины.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru