В C ++ Builder (2009 - Windows 7) Я создал компонент, который включает в себя заголовочный файл с классом со статической переменной-членом - кажется, есть два экземпляра статической переменной-члена, как описано ниже.
У меня есть статическая переменная-член в классе, например
class theclass {
static theclass *ref;
...
}
Это в theclass.h.
в theclass.cpp у меня есть инициализатор
theclass *theclass::ref = NULL
Теперь у меня есть компонент, который включает в себя заголовок в bpl и ссылки на файл .cpp, и я также включаю этот файл в свое основное приложение и ссылку на него, в основном приложении theclass :: ref инициализируется новым экземпляр класса, как
theclass *instance = new theclass().
У меня есть приложение с несколькими новыми компонентами. Когда экземпляр вызывается из кода приложения, тогда все хорошо, когда экземпляр вызывается из кода в bpl, тогда это NULL и происходит сбой? Кажется, что есть две статические переменные, одна из которых находится в bpl, а вторая в main - любые предложения будут оценены?
(вероятно, следует упомянуть, что это мой первый компонент для сборки на С ++ - написано много компонентов Delphi)
[Update]
Если я отключу «Сборку с помощью пакетов времени выполнения», то это сработает - так что, похоже, что-то связано с динамическим связыванием?