我正在用C++编写一个用于VB6的DLL。因此,我不能在我的DLL中调用构造函数(根据this discussion)。但是,我需要在内部维护一个类的实例 - 所以我打算将该对象保留为全局变量并从全局函数中调用构造函数,然后使用另一个全局函数在对象上调用方法。我有这样的想法,也许一个函数就足够了:它会检查一个实例是否存在于一个全局变量中,如果不存在,创建它,然后调用该对象上的方法(或者,如果它是目前,立即调用该方法。)C++如何在DLL中存储程序的初始状态/识别未初始化的变量
现在,我该如何找出一个实例是否已经创建?我不能在声明中为全局变量赋值任何值,对吗?就我所知,它们在C++中也没有保证的默认值。
因此,我的问题:无论如何这是可能的,以及如何?
或者我可以使用BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved )
函数来初始化变量吗?如果是这样,有人可以填写我正在做什么ul_reason_for_call
案件,以及当我的链接的例子中VB6加载DLL时自动调用哪些?
我不会在DllMain中做到这一点。但是,为什么不使用包装类的静态成员的助手类,并且所有全局函数(由VB6调用)都可以使用该实例? – 2011-02-01 13:17:30
@Sasha:但是这并不意味着我需要创建一些实例才能访问它的方法?请稍微具体一点,我不太明白! – 2011-02-01 13:21:44
请参阅下面的答案。 – 2011-02-01 13:24:26