Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/72: Рейтинг темы: голосов - 72, средняя оценка - 4.92
 Аватар для Mencey
155 / 102 / 12
Регистрация: 22.07.2010
Сообщений: 445

Создание DLL

22.08.2010, 20:39. Показов 13675. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите создать DLL в C++ Builder 6 или Dev-CPP которая будет полностью анологична следующей написаной на Delphi 7:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
library MyDLL;
 
{$R *.res}
 
function f: integer; stdcall; export;
begin
  Result:=10;
end;
 
exports f;
 
begin
 
end.
Добавлено через 2 минуты
Dynamic-Link Library: Теория + Практика, читал но непомогло!

Добавлено через 3 часа 5 минут
Или подскажите какинебудь книги по созданию DLL в C++ Builder 6
А то ни как неполучается создать DLL!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.08.2010, 20:39
Ответы с готовыми решениями:

Создание DLL
Windows XP 32, C++ Builder4. Система (комплекс программ) имеет тенденцию к расширению за счет подключения новых модулей.В какой-то...

Создание DLL
Здравствуйте, помогите пожалуйста разобраться- не могу понять в чём ошибка. Создаю C++ Builder - DLL ...

Создание формы в dll
Добрый день! Задача простая: вызвать форму из dll (дальше на ней нужно будет делать много интересных штук,но с этим я разберусь) ...

11
 Аватар для Flyrk
13 / 13 / 1
Регистрация: 19.08.2010
Сообщений: 47
22.08.2010, 20:52
уважаемый Mencey попробуйте в C++ Builder'e нажать F1 - для вызова справки. мне в свае время это очень помогло.
0
 Аватар для Mencey
155 / 102 / 12
Регистрация: 22.07.2010
Сообщений: 445
22.08.2010, 21:20  [ТС]
Flyrk, Про справки я знаю но у меня проблемы с Английским чем я сейчас и занимаюсь(учу Английский), а вы случайно не знаете где можно скачать русскую версию справок по CBuilder 6 (желательно бесплатно).
0
 Аватар для Flyrk
13 / 13 / 1
Регистрация: 19.08.2010
Сообщений: 47
23.08.2010, 14:59
ладно, раз уж ты нажал на спасибо, я обязан тебе помочь. сейчас буду искать справки. как найду выложу.

Добавлено через 1 минуту
вот, http://www.firststeps.ru/cbuilder/r.php?91
удачи.
2
37 / 37 / 5
Регистрация: 12.02.2010
Сообщений: 239
23.08.2010, 21:47
Цитата Сообщение от Mencey Посмотреть сообщение
следующей написаной на Delphi 7
Знал бы Delphi, тогда бы подсказал!!!!
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
24.08.2010, 00:13
Цитата Сообщение от Mencey Посмотреть сообщение
Dynamic-Link Library: Теория + Практика, читал но непомогло!
А что в вашем понимании означает фраза "читал - не помогло"?
По-моему, там описано всё, что вам нужно.
По условию вашей задачи вам необходимо поместить в библиотечный модуль функцию, которая ничего не делает, кроме того, что возвращает целочисленное значение типа int, постоянно равное 10-ти...
В статье я приводил пример на вычисление суммы по двум переданным параметрам... неужели сложно переделать?

Смотрим пример из статьи и изменяем его...

Заголовочный файл:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#ifndef __TESTDLL_H
#define __TESTDLL_H
 
/*
символ TESTDLL_EXPORTS по умолчанию определен в Вашем проекте (см. Project Options -> С/С++ -> General->Preprocessor Definitions).
При этом все экспортируемые идентификаторы предваряются символом DLL_SPEC.
В случае определения TESTDLL_EXPORTS в проекте DLL_SPEC определяется как экспортируемый объект; в случае же отсутствия такого определения мы получим импортируемый объект.
Таким образом, один и тот же заголовочный файл может быть использован и в DLL-проекте, и в проекте, который будет использовать данную DLL! Без каких-либо изменений.
*/
 
#ifdef TESTDLL_EXPORTS
#define DLL_SPEC extern "C" __declspec(dllexport)
 
#else
#define DLL_SPEC extern "C" __declspec(dllimport)
#endif // TESTDLL_EXPORTS
 
/*
Каждый экспортируемый идентификатор предваряем __declspec(dllexport).
Эта директива позволяет линкеру определить, что данный идентификатор следует экспортировать из DLL. При этом создается специальный lib-файл, который содержит все экспортируемые идентификаторы из модуля. Также экспортируемые объекты заносятся в раздел экспорта DLL.
*/
 
DLL_SPEC int f(void);
 
#endif // __TESTDLL_H
Файл кода (код стандартного шаблона DLL исключён):
C++
1
2
3
4
5
6
7
#include "TestDLL.h" // создание этого заголовочного файла будет описано ниже
//---------------------------------------------------------------------------
int f(void)
{
  return 10;
}
//---------------------------------------------------------------------------
Как вы видите, изменить нужно было только прототип функции и её описание.
Остальное осталось таким же, как в статье.
Теперь выбирайте один из описанных вариантов подключения библиотеки и пользуйтесь.

Не по теме:

Можете также добавить __stdcall к функции ... хотя для таких функций не вижу необходимости использовать ни данный тип преобразования вызова, ни DLL в целом...

0
 Аватар для Mencey
155 / 102 / 12
Регистрация: 22.07.2010
Сообщений: 445
24.08.2010, 11:24  [ТС]
Цитата Сообщение от MikeSoft Посмотреть сообщение
Можете также добавить __stdcall к функции ... хотя для таких функций не вижу необходимости использовать ни данный тип преобразования вызова, ни DLL в целом...
Я просто пишу плагин для проги и там должна быть одна экспортируемая функция с __stdcall. На Delphi напсал, но т.к. я Delphi знаю плохо то написать плагин не смог.

MikeSoft, в сатетье всё написано понятно, я написал всё как в статье кое-что подправил, но у меня программа ругается на DLL(говорит что DLL не к это программе).

Сейчас изменил кое-что и ругаться перестали, но я не знаю правильно ли написал:


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <windows.h>
 
extern "C" int __stdcall __declspec(dllexport) f();
 
int __stdcall f()
{
  return 10;
}
 
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
  return 1;
}
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
24.08.2010, 14:00
Mencey, тогда уже так:
C++
1
2
3
4
extern "C" type __declspec(dllexport) __stdcall name(parameters)
{
  ...
}
0
 Аватар для Mencey
155 / 102 / 12
Регистрация: 22.07.2010
Сообщений: 445
24.08.2010, 18:44  [ТС]
А вот так можно:
C++
1
extern "C" type __export __stdcall name(parameters)
кстати чем отличается _stdcall от __stdcall и _export от __export (т.е. когда ставиш два или один '_'(знак подчёркивания)) так и так слова выделяются?
0
Эксперт С++
 Аватар для MikeSoft
3957 / 1812 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
25.08.2010, 12:04
Mencey, теоретически - разницы никакой: Embarcadero Docs

Двойное подчёркивание - признак использования С++.
0
 Аватар для Mencey
155 / 102 / 12
Регистрация: 22.07.2010
Сообщений: 445
25.08.2010, 12:22  [ТС]
Всем спасибо всё понял всё работает!
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
28.06.2011, 17:09
Создаю DLL, подключаю ее проекту при компиляции окно проекта просто не появляется.(С++ Bulder 6,создаю по примеру из книги Архангельского).При исключении вызова функции DLL, из самого проекта все нормально.
Кто подскажет в чем проблема?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.06.2011, 17:09
Помогаю со студенческими работами здесь

Создание потока в DLL
Ребят, дайте ссылку на тему, где можно про это почитать. Через поиск в разделе не нашел...

Создание формы в dll
Добрый день.Мне необходимо загрузить из dll функцию, во время выполнения которой долдна появиться форма с progressbaroм, который должен...

Создание и использование dll
Всем доброго времени суток! Среда выполнения Borland Builder проблема в вызове метода класса зашитого в dll //содержание dll ...

Создание DLL в BDS2006
Создаю DLL по примеру, как написано у Архангельского - не работает. А его проект с диска - работает нормально (хотя тексты файлов...

Создание классов в DLL
уже розобрался..Я все норм делал,ток у меня билдер 2007, а он создает пеапки дебаг и релиз и туда помещает .ехе , а .ехе не запускается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru