Я пишу DLL на C ++ для использования с VB6.Поэтому у меня не может быть конструктора, вызванного в моей DLL (согласно этому обсуждению ).Однако мне нужно поддерживать экземпляр класса внутри, поэтому я намереваюсь сохранить объект как глобальную переменную и вызвать конструктор из глобальной функции, а после этого использовать другую глобальную функцию для вызова метода объекта.
У меня была идея, что, возможно, одной функции будет достаточно: она проверит, присутствует ли экземпляр в глобальной переменной, а если нет, создаст его, а затем вызовет метод объекта (или, еслиэто присутствует, немедленно вызовите метод.)
Теперь, как я могу узнать, уже создан ли экземпляр?Я не могу присвоить глобальной переменной какое-либо значение в объявлении, верно?И, насколько я понимаю, они также не имеют гарантированного значения по умолчанию в C ++.
Поэтому мой вопрос: возможно ли это в любом случае и как?
Или я могу использовать BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
функция для инициализации переменных?Если да, может кто-нибудь сообщить мне, что именно представляют собой ul_reason_for_call
случаи, и какой из них автоматически вызывается, когда VB6 загружает DLL, как в моем связанном примере?