Размер файла заголовка имеет значение только с точки зрения времени, необходимого для компиляции. Неиспользуемые объявления не влияют на производительность, и на размер вашего кода уже влияют поставки всех функций в DLL вместо статической привязки только необходимых функций.
Рассматривали ли вы возможность добавления COM-интерфейса в библиотеку? Вместо отправки отдельного .h файла ваши пользователи могут просто:
#import "mathFunctions.dll" named_guids
Автоматически объявленные интеллектуальные указатели делают функции пригодными для использования без дополнительных ручных объявлений или даже очистки. Вы можете определить свою документацию в IDL, которая будет появляться во всплывающих подсказках в IDE, когда ваши клиенты будут использовать ваш код. Ваш код также можно использовать на всех языках Microsoft от VB3-6, wscript и .Net.
double myFunc(double x)
{
double a=1, b=2, c=3, y=0;
MathLib::PolynomPtr polynom(CLSID_CPolynom, 0, CLSCTX_INPROC_SERVER);
y = polynom->someFunction(a, b, c, x); // use it somehow
return y;
}
Используемый in-proc, COM добавляет только около 16 циклов накладных расходов на выполнение каждой функции. Поскольку это умный указатель, вам не нужно его чистить. И я не включил его выше, но, как и во всем внешнем, вы должны добавить базовые обертки для функций try / catch:
catch (_com_error &e) { printf("COM error: %08x %s\n", e.Error(), e.Description()) };