В общем, любой класс с конструктором должен также экспортировать деструктор.
Как говорится, есть несколько вещей, которые нужно с осторожностью относиться ...
Если вы работаете в Windows, вам нужно быть осторожным при смешивании версий VS с библиотеками. Если вы собираетесь распространять свою библиотеку как DLL, экспорт конструкторов и деструкторов - плохая идея. Проблема в среде выполнения C ++. Это в значительной степени требование, чтобы та же самая среда выполнения, которая обрабатывает выделение памяти, должна была обрабатывать освобождение. Это причина № 1 «плохих вещей», которые происходят, когда вы пытаетесь использовать библиотеку, скомпилированную в VS 2005, например, из VS 2008.
Решением для этого является предоставление фабричных методов для создания вашего класса (выделение обрабатывается средой выполнения, с которой вы скомпилировали), а также методов для удаления / уничтожения вашего класса (поэтому освобождение происходит в той же среде выполнения).