зачем нам экспортировать класс в C ++? - PullRequest
3 голосов
/ 19 ноября 2010

Я новичок, поэтому, пожалуйста, потерпите меня, если это звучит слишком тривиально. Когда я искал по сети для этого, я получил результаты, показывающие, как это сделать. Мой вопрос, почему мы делаем это в первую очередь?

Ответы [ 3 ]

4 голосов
/ 19 ноября 2010

Это относится к платформе Windows, когда вы разрабатываете библиотеки DLL C ++.

Вы должны использовать модификатор __declspec (dllexport), чтобы ваш класс и его методы появились в списке экспортированных символов для вашей DLL.

Таким образом, исполняемые файлы, использующие вашу DLL, могут создавать и вызывать методы в этих классах.

Однако вы должны убедиться, что исполняемый файл и DLL скомпилированы одной и той же версией одного и того же компилятора, поскольку символы C ++ экспортируются с использованием относительно сложной кодировки искажения имени (вы можете видеть, что с помощью зависит.exe). ), этот формат варьируется от одного компилятора к другому.

2 голосов
/ 19 ноября 2010

Вам не нужно для экспорта чего-либо, если только вы не создаете DLL.В этом случае вы можете использовать атрибут dllexport в качестве альтернативы способу "старой школы" использования .def файлов.

1 голос
/ 19 ноября 2010

Технически вы не можете экспортировать класс, только функции. Однако на уровне класса вы можете назначить экспорт всех функций.

Экспорт функции означает, что эта функция может быть вызвана из-за пределов текущего исполняемого файла.

Это необходимо, когда вы пишете, например, DLL, которая является отдельной сущностью.

...