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