Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
5 / 5 / 1
Регистрация: 20.11.2017
Сообщений: 51
1

Создание объекта класса, описанного в DLL

04.11.2018, 21:29. Показов 996. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
На счет того, почему же вызываются методы класса без создания объекта - вы мне разъяснили, что функция GetProcAdress() понятия не имеет, метод это класса или нет, ей тупо передаешь
дескриптор модуля и имя метода (который по-сути является обычной сишной и содержит в качестве 1-ого параметра указатель на объект). Но так как ф-ция GetName() из моего примера не использовала поля класса,
то выполнение передавалось без проблем. Но как только я добавил в ф-цию GetName() печать поля класса, то сразу же получил злой сегфолт при выполнении. Тут разобрался, спасибо.
Так же узнал, что можно обойтись def файлом без всяких __decclspec(dllexport/dllimport). Потому что линковка с файлом определения def или компиляция с __declspec - дают на выходе библиотеку с определением .DLL
И библиотеку "импорта".lib.

Но на счет класса не понятно,
Вот есть класс:
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
//decl.h
 
# ifndef ARRAY_DLL_EXPORTS
# define ARRAY_DLL_EXPORTS
# define ARRDLL __declspec(dllimport) 
# else
# define ARRDLL __declspec(dllexport)
# endif
 
class ARRDLL Arr{
public:
    int x;
    Arr();
    void GetName();
};
 
//defined.cpp
 
# include <iostream>
# include "decl.h"
 
    Arr::Arr(){
    std::cout<<"In constructor"<<std::endl;
}
 
    void Arr::GetName(){
    std::cout<<"In method class GetName!!!!!!!!!!!!!!!"<<x<<std::endl;
}
Это была DLL.
Все же надеюсь, что кто-то подскажет, как в def файл добавить констр-р, чтобы не использовать __declspec(dllimport/dllexport)Так как если добавлю по ординалу, то и вызывать ее можно будет только по нему, по-моему.
Собрал я её.


Как создать мне объект такого класса???
Что мне в исходнике написать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2018, 21:29
Ответы с готовыми решениями:

Создание указателя на экземпляр класса, описанного после объявления указателя
Здравствуйте! Проблема в том, что нужно сделать так: class A{ public: B* b = nullptr; }; ...

Создание объекта класса с полем являющимся объектом другого класса
Bill a; cin&gt;&gt;a;//тут я ввел с помощью перегруженного оператора ElementSpiska c; //поля у...

Возможно ли создание объекта шаблонного класса в функции этого класса?
Доброго времени суток, уважаемые форумчане :) Мне по лабам задали задание - реализовать шаблон...

Создание объекта класса в методе этого же класса
собственно вопрос. можно ли создавать объект класса в методе того же класса? насколько это...

5
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,671
05.11.2018, 00:02 2
Если у тебя есть lib к dll, то его и используй.
0
5 / 5 / 1
Регистрация: 20.11.2017
Сообщений: 51
05.11.2018, 20:34  [ТС] 3
Вы как всегда немногословны =) . Как мне его использовать то? С функцией понятно - подключаешь той же прагмой lib, показываешь, что ты импортируешь такую-то ф-цию и пользуешься ей. А как быть с классом-то? И хотелось сделать динамическую линковку все таки.
0
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,671
05.11.2018, 20:45 4
У тебя же есть h-файл от dll с классами.
0
5 / 5 / 1
Регистрация: 20.11.2017
Сообщений: 51
05.11.2018, 21:02  [ТС] 5
Да хедер не тот подключал, разобрался. Спасибо Вам.
А скажите еще вот что, в библиотеку можно добавить шаблон?
Я библиотеки осваиваю, и для закрытия материала осталось шаблоны в библиотеках.
Ведь чисто логически: Шаблонная ф-ция, к примеру, инстанцируется на этапе компиляции, в зависимости от шаблонных пар-ов, переданных явно или неявно - неважно сейчас. Библиотека - это кусок объектного кода (уже скомпилированного). По этим рассуждениям можно сказать, что шаблонов в библиотеке быть не может?! А как же STL? или там все в исходниках? Добавьте от себя пару слов, для чудного завершения дня.
0
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,671
07.11.2018, 16:58 6
Ну ты сам ответил.
0
07.11.2018, 16:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2018, 16:58
Помогаю со студенческими работами здесь

Создание объекта класса
Здравствуйте, подскажите пожалуйста в чем разница между Test t(блаблабла); и Test *t = new...

Создание объекта класса
Есть такой класс: class CSomeClass { public: void SomeMethod(); }; И вот как можно...

Создание объекта класса
Как можно создать объект класса вне функции int main()? Допустим у меня есть 4 файла myclas.h...

Создание объекта класса
Создал свой класс с именем и фамилией, не могу создать объект этого класса, при проверке на ошибки...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru