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

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

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

Студворк — интернет-сервис помощи студентам
На счет того, почему же вызываются методы класса без создания объекта - вы мне разъяснили, что функция 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.11.2018, 21:29
Ответы с готовыми решениями:

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

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

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

5
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
05.11.2018, 00:02
Если у тебя есть lib к dll, то его и используй.
0
5 / 5 / 1
Регистрация: 20.11.2017
Сообщений: 51
05.11.2018, 20:34  [ТС]
Вы как всегда немногословны =) . Как мне его использовать то? С функцией понятно - подключаешь той же прагмой lib, показываешь, что ты импортируешь такую-то ф-цию и пользуешься ей. А как быть с классом-то? И хотелось сделать динамическую линковку все таки.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
05.11.2018, 20:45
У тебя же есть h-файл от dll с классами.
0
5 / 5 / 1
Регистрация: 20.11.2017
Сообщений: 51
05.11.2018, 21:02  [ТС]
Да хедер не тот подключал, разобрался. Спасибо Вам.
А скажите еще вот что, в библиотеку можно добавить шаблон?
Я библиотеки осваиваю, и для закрытия материала осталось шаблоны в библиотеках.
Ведь чисто логически: Шаблонная ф-ция, к примеру, инстанцируется на этапе компиляции, в зависимости от шаблонных пар-ов, переданных явно или неявно - неважно сейчас. Библиотека - это кусок объектного кода (уже скомпилированного). По этим рассуждениям можно сказать, что шаблонов в библиотеке быть не может?! А как же STL? или там все в исходниках? Добавьте от себя пару слов, для чудного завершения дня.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
07.11.2018, 16:58
Ну ты сам ответил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.11.2018, 16:58
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru