Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/47: Рейтинг темы: голосов - 47, средняя оценка - 4.85
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033

Классы в dll

22.05.2013, 23:12. Показов 10345. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Господа как можно поместить свой класс в dll и потом использовать этот класс в своей программе ?
Примного благодарен буду за разъеснение ,маленький пример или полезную ссылку (даже придставить не могу как это сделать , да ещё и при экспорте не потерять истинное имя т.к. EXTERN _C не подайдёт т.к. в языке "С" нет же классов), вообщем всем заранее огромное спасибо !!!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.05.2013, 23:12
Ответы с готовыми решениями:

Классы в DLL
Здравствуйте. Можете объяснить с точки зрения памяти, почему экспорт классов запрещен в DLL? Долго искал, как это сделать, понял, что,...

Повторяющиеся классы в DLL
Вот совет нужен. К примеру есть две либы - динамическая B.DLL и стат. A.LIB. А.LIB динамически загружает B.DLL (Ну с помощью...

Библиотека Dll, модули и классы!
Ребята, всем привет! Предупреждаю сразу: я новичок в программировании, поэтому не кидайтесь помидорами. А вопрос у меня следующий: есть dll...

42
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
26.05.2013, 03:20
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от UI Посмотреть сообщение
Показывают и ГОРАЗДО более корявый код, посмотри на свои посты...
Ой, ну надо же, какие тут многозначительные многоточия... Ну, покажи мне более корявый код в моих постах. Гораздо более корявый.

Добавлено через 18 минут
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
kravam, Спасибо большое. Теперь работает!
А чё работает-то? Покажи код и командную строку
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
26.05.2013, 10:25
Цитата Сообщение от kravam Посмотреть сообщение
А чё работает-то?
библиотека правильно скомпилировалась. Вот весь код
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
26.05.2013, 14:52
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
библиотека правильно компилировалась весь код
я с явой незнаком.

Добавлено через 4 часа 21 минуту
Цитата Сообщение от UI Посмотреть сообщение
Ну да, некоторым в OLE - ковыряться не надо, понадобилось в DEF-файле посмотреть одну-единственную функцию, создающую экземпляр класса - тоже не надо, надо кнопку "Пыщь, чтобы все круто!!! Трах-тибидах!!!"

Вот пока такой кнопки нет - будешь и в OLE, и в DEF-ах и в отладчике и вообще где угодно ковыряться, чтобы программы работали (и чтобы они работали правильно)
Я всего лишь хочу сказать, что если можно без чего-то обойтись (файлы *.def, в данном случае), надо без этого обходиться. Это правильно. Итак, мы пошли по тому, пути, что нам надо, чтобы
C++
1
GetProcAdress (..., ...);
Сработала корректно. И чтобы имя функции было наиболее "человечным". Так не свернём же малодушно на полдороге с этого пути! Как в песне поётся и
"и наградой за ночи отчаянья будет вечный полярный день!"
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//main.cpp
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include "tst.h"
 
 
int main()
{
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 pechat* p;
            HINSTANCE hlib = 0;
            hlib = LoadLibrary("tst.dll");
            FARPROC adres= GetProcAddress(hlib, "ClassCreate");
            p= (pechat*)adres();      
            p->pechat_imeni();  
            p->pechat_storon();
            delete p; 
  
  getchar();
  return 0;
}
 
//tst.cpp
#include "tst.h"
#include <stdio.h>
 
void pechat_treu::pechat_imeni  () {printf ("треугольник\n");}; 
void pechat_treu::pechat_storon () {printf ("три стороны\n");}; 
 
extern "C"
__declspec(dllexport)pechat* ClassCreate() {return new pechat_treu;}
 
 
//tst.h
#ifndef _TST_H
#define _TST_H
class pechat {
 public:
  virtual void pechat_imeni  ()= 0;
  virtual void pechat_storon ()= 0;
};
 
class pechat_treu: public pechat {
 public:
  void pechat_imeni  (); 
  void pechat_storon (); 
};
 
#endif
Компилим:

Bash
1
2
3
4
5
6
7
rem кропаем main.exe
del main.exe
g++ -o main.exe main.cpp 
 
rem кропаем tst.dll
del tst.dll
g++  -shared -o tst.dll tst.cpp

До новых встреч!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.05.2013, 14:52

[Манул=Гайд=Статья]Классы и DLL
Многие новички которые не работали в сфере программирования и хотят сразу работать с C# задаются вопросами: Если весь код можно...

Как использовать классы dll в Visual C++
Если есть dll, созданная скажем в VB и содержащая класс(форма), то как использовать этот класс в VC++?

Нужны классы для архивации из Ionic.dll
У кого есть классы из Dll - Ionic.zip( желательно конечно именно функцию для архивации).. Можно и другие классы, если поделитесь).. ...

Как подключить классы из dll библиотеки, созданную в С# в программу?
Как подключить классы из dll библиотеки, созданную в С# в программу?

Можно ли вынести классы сгенерированные Entity Framework в отдельную dll?
Дорогие форумчане, прошу у вас помощи Пишу сейчас небольшое клиент-серверное приложение на C# На сервере установлен MS SQL Server и для...


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

Или воспользуйтесь поиском по форуму:
43
Ответ Создать тему
Новые блоги и статьи
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru