我都是, 我有一个win32应用程序和几个必须使用全局变量的DLL。在每个dll我放
extern MYTYPE* myvariable = NULL;
在主程序中我有
MYTYPE* myvariable = NULL;
mavariable = new MYTYPE();
....
现在,当加载DLL时,myvariable为NULL,我无法使用它。如何与所有DLL共享主程序的实例?
答案 0 :(得分:1)
您应该对程序进行一些更改。如果可能,您可以将myvariable
从EXE移动到DLL中的一个。然后,您可以继续使用导入库。
一般来说,您可以从EXE导出函数或数据,但在大多数情况下,执行此操作的意义较小。所以你很少能看到这一点。例如,WinWord.exe或Excel.exe执行此操作。
如果确实需要从EXE导出格式或数据并在DLL中使用它,则应使用动态绑定,GetProcAddress和GetModuleHandle(NULL)。您可以在DllMain内进行此类手动绑定。您可以在DLL的本地myvariable
中保存的EXE的myvariable
地址。
答案 1 :(得分:0)