Я не так разбираюсь в создании DLL в MSVC++ 2010, просто может быть несколько раз в рамках кривой обучения. На данный момент у меня есть очень большой файл с примерно 10 различными классами. Мне приходится разбивать файл на несколько файлов и перемещать связанные классы в один и тот же файл. Поэтому, прежде чем продолжить, я хотел бы узнать от опытных разработчиков о моей ситуации.Ловушки для разбивки большого файла на одну DLL?
Что-то вроде следующего
// Header
namespace collections
{
classA
classB
ClassC
ClassD : ClassA,ClassB
}
// CPP
namespace collections
{
classA
{
// Implementations
}
// Rest of the classes
}
После разбивки на отдельные файлы
// ClassA.h
namespace Collections
{
ClassA
}
// ClassB.h
namespace Collections
{
ClassB
}
// Implentations etc
Мой основной проблемой является использование dllexport/DllImport класса хранения атрибутов Поскольку файл будет разбит I необходимо будет использовать следующее:
#ifdef MAKEDLL
# define EXPORT __declspec(dllexport)
#else
# define EXPORT __declspec(dllimport)
#endif
против классов для их экспорта/импорта. Но размещение этой строки в каждом заголовочном файле, который будет создан (с одним пространством имен «Коллекции»), будет ли это иметь какие-либо плохие последствия при компиляции или создании кода? Я смотрел вокруг он-лайн и узнал, что люди больше всего жалуются на ошибки компоновщика/предупреждения, когда определенный член переопределяется или не найден во время создания DLL. Это, безусловно, должна быть решена проблема только, что я не знаю, что является лучшим и правильным способом сделать это. Мне нужно создать только одну DLL в конце. Мне не нужно создавать несколько DLL.
Любые рекомендации или помощь очень ценятся. Спасибо
Прежде всего, вы не должны dll разделять классы, которые разделяют логический контекст (отвечают за что-то одно и то же). Если ваши классы хорошо написаны, а не в одном файле (я читал эти строки, что у вас есть все классы в ОДНОМ исходном файле?), Это не должно быть проблемой.IMHO, разделяющий их в разных dll, имеет смысл только в том случае, если вы хотите доставить свою программу с различными функциями (плагинами), но если ваша программа всегда требует, чтобы все DLL работали, вы можете просто позволить им быть такими, какие они есть сейчас. – Najzero
Ваш вопрос неясно, хотите ли вы разбить одну DLL на несколько или один файл H/CC на несколько, сохраняя их в одной DLL. –
@Najzero Файл получает большой беспорядок. Так что я должен сломать его –