Страницы

Поиск по вопросам

воскресенье, 23 февраля 2020 г.

Как в DLL использовать пользовательский тип?

#cpp #dll


Есть dll на C++ и проект на C++. Как мне сделать так, чтобы функция в dll принимала
ссылку на экземпляр некоторого класса (пользовательский тип, а не char или int) из
проекта и обрабатывала его? Нужно ли описание этого класса вынести в отдельный хедер
и включить его и в dll и в проект? Планируется использование динамического подключения
dll к проекту.
    


Ответы

Ответ 1



Нужно ли описание этого класса вынести в отдельный хедер и включить его и в dll и в проект? Да, именно так, если вы хотите полноценно использовать этот класс внутри вашей DLL. "Полноценно использовать" - это значит иметь возможность объявлять объекты этого класса и/или доступаться к его членам. Разумеется, если ваш класс содержит члены с не-inline определениями, то придется организовать соответствующую инфраструктуру. Члены класса будут объявляться в одном модуле (DLL или EXE), экспортироваться оттуда и импортироваться остальными модулями (DLL или EXE) (см. __declspec(dllexport) и пр.) Эти моменты зависят от реализации, но я подразумеваю, что вы ведете речь о MSVC.

Комментариев нет:

Отправить комментарий