Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > классы в dll


Автор: Romikgy 15.2.2006, 15:12
Можно ли как то сделать чтобы можно было классы (объявление) засунуть в dll , а потом их брать юзать , наследовать?

Автор: Daevaorn 15.2.2006, 17:46
Romikgy, через интерфейсы. СОM.

Автор: Romikgy 15.2.2006, 17:54
Цитата(Daevaorn @ 15.2.2006, 16:46 Найти цитируемый пост)
через интерфейсы. СОM

где полистать об этом на С++?
Добавлено @ 17:56
+ наследование из СОМ?

Автор: Daevaorn 15.2.2006, 18:36
http://www.gamedev.net/reference/programming/features/intdll/page3.asp
http://www.gamedev.ru/faq/?id=20

Автор: Fin 15.2.2006, 22:40
Это можно делать и без COM. Но тогда не будет переносимости библиотеки. Библиотека будет привязана к одному компилятору.

Автор: DeadSoul 15.2.2006, 22:49
Цитата(Fin @ 15.2.2006, 22:40 Найти цитируемый пост)
Это можно делать и без COM. Но тогда не будет переносимости библиотеки. Библиотека будет привязана к одному компилятору.

Угу.

Если компилятор MS VC++ 7 просто создай проект Win23\Win 32 Project(НЕ Win 32 Console Project!)
В появившемся Визарде:
- Aplication Settings
- Aplication type = dll
- Additional Options = Export Symbols
Добавлено @ 22:50
Там тебе сразу компилятор создаст:
- экспортируемую функцию
- экспортируемую переменную
- экспортируемый класс

Автор: np9mi7 16.2.2006, 01:31
http://forum.vingrad.ru/index.php?showtopic=46303&unread=1&hl=

Автор: Romikgy 16.2.2006, 13:43
Daevaorn, как потом это чудо вызвать из программы?
Код

class MYDLL_EXPORT my_class {
    int private_var;

    void my_method1(int var);

public:
    int public_var;

    int my_method2(int var);
};


Цитата(Fin @ 15.2.2006, 21:40 Найти цитируемый пост)
Это можно делать и без COM

Как?
Цитата(Fin @ 15.2.2006, 21:40 Найти цитируемый пост)
привязана к одному компилятору.

Почему?

np9mi7, интересная статейка , только к чему пришли в конце я не понял smile
к использованию СОМ ? или чет другое?

Автор: Fin 16.2.2006, 16:29
Цитата(Romikgy @ 16.2.2006, 12:43 Найти цитируемый пост)

Цитата(Fin @ 15.2.2006, 21:40 Найти цитируемый пост)
Это можно делать и без COM

Как?
Цитата(Fin @ 15.2.2006, 21:40 Найти цитируемый пост)
привязана к одному компилятору.

Почему?

Потому что схема расположения объектов в памяти и обрашения к ним может отличаться в других компиляторах. Плюс оператор new и delete могут по разному работать.

Автор: Romikgy 17.2.2006, 10:48
Цитата(Fin @ 16.2.2006, 15:29 Найти цитируемый пост)
Потому что схема расположения объектов в памяти и обрашения к ним может отличаться в других компиляторах. Плюс оператор new и delete могут по разному работать.


Чем это мне грозит? что в разных местах расположены?
и какая разница как работает new и delete????

Автор: UnixBeginner 17.2.2006, 11:23
а как написать dll для компиляции с gcc?
как оформить и как потом вызвать и можно ли тогда засунуть класс. Видел вроде пример
http://www.gamedev.ru/faq/?id=20
, но там помимо класса еще и какая-то функция описывается, что она делает?

Автор: chaos 17.2.2006, 11:52
Цитата(UnixBeginner @ 17.2.2006, 11:23)
и какая-то функция описывается, что она делает?

тебе не пофиг ли? smile
это просто пример!

Автор: Daevaorn 17.2.2006, 12:16
Цитата(Romikgy @ 16.2.2006, 13:43 Найти цитируемый пост)
как потом это чудо вызвать из программы?

Подключи нужный хидер и не забудь прилинковать dll
Цитата(Romikgy @ 16.2.2006, 13:43 Найти цитируемый пост)
Цитата(Fin @ 15.2.2006, 21:40 )
Это можно делать и без COM


Как?

Цитата(Fin @ 15.2.2006, 21:40 )
привязана к одному компилятору.


Почему?


Эта фишка MS-specific. Т.е. на других компиляторах отличных от MSVC не работает

Цитата(Romikgy @ 17.2.2006, 10:48 Найти цитируемый пост)
Чем это мне грозит? что в разных местах расположены?
и какая разница как работает new и delete????


Т.к. у разных компиляторов разные менеджеры памяти, которые не совместимы друг сдругом.

Автор: Romikgy 17.2.2006, 14:19
Цитата(Daevaorn @ 17.2.2006, 11:16 Найти цитируемый пост)
прилинковать dll

это че ? динамически подключить нельзя?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)