![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
TaNK |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 669 Регистрация: 29.10.2006 Где: Краснодар Репутация: нет Всего: 1 |
Уважаемые, прочитал уйму статей в интернете, но все равно не пойму как реализовать сабж.
main.h
main.cpp
запустил code::blocks 10.05 и получили dll не пойму как вызвать из основной проги с помощью LoadLibrary и обраться к функции класса Print(); -------------------- Oracle 11.2.0.3.0 FireBird 1.0-2.5 |
||||
|
|||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Раз ты экспортируешь класс, то ты должен его импортировать, а LoadLibrary здесь не нужна.
Просто включаешь в основной программе твой main.h, подключаешь lib-файл, полученный при сборке dll-ки и просто используешь класс. типа того:
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
TaNK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 669 Регистрация: 29.10.2006 Где: Краснодар Репутация: нет Всего: 1 |
borisbn - у меня code::blocks не создает *.lib а есть что то типа
libDLL.dll.a libDLL.dll.def -------------------- Oracle 11.2.0.3.0 FireBird 1.0-2.5 |
|||
|
||||
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
А ещё лучше создать интерфейс, наследоваться от него ( реализовать имплементацию ), создать и экспортировать всего одну функцию, создающую имплементацию.
А в основной программе:
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
TaNK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 669 Регистрация: 29.10.2006 Где: Краснодар Репутация: нет Всего: 1 |
virtual IFace() {} - ругается что конструктор не может быть виртуальным...убрать определение virtual?
-------------------- Oracle 11.2.0.3.0 FireBird 1.0-2.5 |
|||
|
||||
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
TaNK, пардон. это должен был быть виртуальный деструктор
и то же самое с
стучи в жаббер, чтобы не захламлять форум Это сообщение отредактировал(а) borisbn - 22.9.2010, 14:36 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
TaNK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 669 Регистрация: 29.10.2006 Где: Краснодар Репутация: нет Всего: 1 |
Я запутался....можно ли увидеть приведенный пример уже готовй со всеми файлами....а т я не пойму что к чему должно бытьпривязано...огромное спасибо
-------------------- Oracle 11.2.0.3.0 FireBird 1.0-2.5 |
|||
|
||||
TaNK |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 669 Регистрация: 29.10.2006 Где: Краснодар Репутация: нет Всего: 1 |
прошу прощения все получилось....был невнимателен!
Добавлено через 3 минуты и 41 секунду main.h
main1.h
main.cpp
запускаем main.cpp - получчаем dll в основной проге
borisbn + 1 -------------------- Oracle 11.2.0.3.0 FireBird 1.0-2.5 |
||||||||
|
|||||||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Поздравляю. До повторного изобретения COM'а остался один шаг (GUID + QueryInterface)
![]() |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
![]() правда эта конструкция кроссплатформенная, а подсмотрел её я действительно из COM'а, выкинув GUID, QueryInterface и обращение к реестру -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
TaNK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 669 Регистрация: 29.10.2006 Где: Краснодар Репутация: нет Всего: 1 |
Уважаемые, а скажите а зачем делать класс абстрактным?
и еще пример class Date(){}; class subdate: public Date { // } мне нужен тип Date, но обратиться я не могу т.к. в Date объвлена чистая виртуальная функуия, как быть в этом случае, какой тип использовать в классе subdate -------------------- Oracle 11.2.0.3.0 FireBird 1.0-2.5 |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 3 Всего: 106 |
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Что бы наследники не забыли их определить
Отдельно стоит случай абстрактного класса, состоящего ИСКЛЮЧИТЕЛЬНО из чисто виртуальных функций (пример interface'а). Такой класс можно безопасно экспортировать куда угодно, т.к. де факто в нем кроме таблицы виртуальных функций (причем оригинальная VTBL этого класса НИКОГДА не будет использоваться) вообще ничего нет. Никаких функций. Т.е. линкеру не никогда придется линковаться с его функциями (т.к. их нет)
|
|||
|
||||
TaNK |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 669 Регистрация: 29.10.2006 Где: Краснодар Репутация: нет Всего: 1 |
Уважаемые, подскажите пожайлуста почему возникает ошибка
main.h
кажется в абстрактном классе портит вот это объявление
экспортироваться будет
все остальное запихнул в АБС так как IsBigDiff ипользует в той или иной мере main.cpp
ругает меня компил на строку return new Date(); и пишет cannot allocate an object of abstract type 'Date' because the following virtual functions are pure within 'Date': virtual int ABS_date::datediff(ABS_date::datesign, ABS_date&, ABS_date&)| и пречисляет все мои вирт функции, как исправить...подскажите..пожайлуста -------------------- Oracle 11.2.0.3.0 FireBird 1.0-2.5 |
||||||||
|
|||||||||
xvr |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Компилятор совершенно правильно ругается, разницу между
|
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |